Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как хранить атрибуты? / 25 сообщений из 87, страница 1 из 4
27.04.2012, 11:55
    #37773810
Cheerful Calf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как хранить атрибуты?
Есть два варианта (в спойлере). Какой лучше и почему ?:)
(Количество записей <<10000)

варианты
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
/*===========================================================
* First variant
* 
*==========================================================*/
CREATE TABLE #Strings (
	ID INT,
	String NVARCHAR(32),
	Numbers NVARCHAR(32)
)

INSERT INTO #Strings VALUES (1, 'String1', '1, 2, 4')
INSERT INTO #Strings VALUES (2, 'String2', '4')
INSERT INTO #Strings VALUES (3, 'String3', '1, 3, 0')
INSERT INTO #Strings VALUES (4, 'String4', '4, 0')

SELECT String FROM #Strings WHERE Numbers LIKE N'%'+'4'+N'%'

DROP TABLE #Strings
GO

/*===========================================================
* Second variant
* 
*==========================================================*/
CREATE TABLE #Strings (
	ID INT,
	String NVARCHAR(32),
)

CREATE TABLE #Numbers (
	ID INT,
	Number NVARCHAR(32),
)

CREATE TABLE #StringsNumbers (
	ID INT,
	StringID INT,
	NumberID INT
)

INSERT INTO #Strings VALUES (1, 'String1')
INSERT INTO #Strings VALUES (2, 'String2')
INSERT INTO #Strings VALUES (3, 'String3')
INSERT INTO #Strings VALUES (4, 'String4')
INSERT INTO #Numbers VALUES (0, '0')
INSERT INTO #Numbers VALUES (1, '1')
INSERT INTO #Numbers VALUES (2, '2')
INSERT INTO #Numbers VALUES (3, '3')
INSERT INTO #Numbers VALUES (4, '4')
INSERT INTO #StringsNumbers VALUES (1, 1, 1)
INSERT INTO #StringsNumbers VALUES (2, 1, 2)
INSERT INTO #StringsNumbers VALUES (3, 1, 4)
INSERT INTO #StringsNumbers VALUES (4, 2, 4)
INSERT INTO #StringsNumbers VALUES (5, 3, 1)
INSERT INTO #StringsNumbers VALUES (6, 3, 3)
INSERT INTO #StringsNumbers VALUES (7, 3, 0)
INSERT INTO #StringsNumbers VALUES (8, 4, 4)
INSERT INTO #StringsNumbers VALUES (9, 4, 0)

SELECT #Strings.String
FROM   #StringsNumbers
       INNER JOIN #Numbers
            ON  #StringsNumbers.NumberID = #Numbers.ID
       INNER JOIN #Strings
            ON  #Strings.ID = #StringsNumbers.StringID
WHERE  #Numbers.Number = '4'
GROUP BY
       #Strings.String

DROP TABLE #Strings
DROP TABLE #Numbers
DROP TABLE #StringsNumbers
GO

...
Рейтинг: 0 / 0
27.04.2012, 11:58
    #37773823
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как хранить атрибуты?
2-ой лучше. Первый -- нарушение 1НФ, ты не сможешь такие данные обрабатывать.
...
Рейтинг: 0 / 0
27.04.2012, 12:06
    #37773844
Cheerful Calf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как хранить атрибуты?
А как тот факт, что
* домбазист будет потом "очень доволен" >х3 непонятным таблицам
* написание более сложных запросов (и вероятнее всего более тяжёлых)
* и, наверное, еще чего-то есть...

Не вижу никакой сложности в обработке и сохранении целостности (само собой при использовании ORM).
...
Рейтинг: 0 / 0
27.04.2012, 12:48
    #37773987
S.G.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как хранить атрибуты?
однозначно второй.
нормальные формы придумали не от нечего делать, а потому что так лучше.
...
Рейтинг: 0 / 0
27.04.2012, 12:55
    #37774011
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как хранить атрибуты?
> однозначно второй.
> нормальные формы придумали не от нечего делать, а потому что так лучше.

Не потому, что так лучше, а потому что без них невозможно.
По-другому никак.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
27.04.2012, 12:58
    #37774016
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как хранить атрибуты?
Cheerful Calf* домбазист будет потом "очень доволен" >х3 непонятным таблицам
* написание более сложных запросов (и вероятнее всего более тяжёлых)


Я не понял ни в чём сложность 3х таблиц, ни при чём тут целостность.

Про сложные запросы -- напиши на 1-ый вариант структуры
запрос на получение всех записей (String у тебя), в которых нет
заданного значения в значениях (например, 3) -- и ты всё увидешь
сам.
...
Рейтинг: 0 / 0
27.04.2012, 13:09
    #37774053
Cheerful Calf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как хранить атрибуты?
MasterZivПро сложные запросы -- напиши на 1-ый вариант структуры
запрос на получение всех записей (String у тебя), в которых нет
заданного значения в значениях (например, 3) -- и ты всё увидешь
сам.Не понял?
Код: sql
1.
SELECT String FROM #Strings WHERE Numbers NOT LIKE N'%'+'3'+N'%'
...
Рейтинг: 0 / 0
27.04.2012, 13:32
    #37774111
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как хранить атрибуты?
On 04/27/2012 02:09 PM, Cheerful Calf wrote:

> Не понял?
>
> SELECT StringFROM #StringsWHERE NumbersNOT LIKE N'%'+'3'+N'%'

Вот именно, что не понял.
А теперь замени в этой строке число 3 на число 33, и повтори.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
27.04.2012, 13:39
    #37774129
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как хранить атрибуты?
MasterZivА теперь замени в этой строке число 3 на число 33, и повтори.

А заодно подумай над планом исполнения, использованием индексов и прочими вещами, которыми
реальные базы отличаются от игрушечных.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
27.04.2012, 18:22
    #37774982
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как хранить атрибуты?
On 04/27/2012 02:39 PM, Dimitry Sibiryakov wrote:

> MasterZiv
> А теперь замени в этой строке число 3 на число 33, и повтори.
>
>
> А заодно подумай над планом исполнения, использованием индексов и прочими
> вещами, которыми
> реальные базы отличаются от игрушечных.

Да, подумай, подумай !
Обязательно подумай !

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
27.04.2012, 22:01
    #37775141
S.G.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как хранить атрибуты?
MasterZiv2-ой лучше . ...
S.G. однозначно второй.
нормальные формы придумали не от нечего делать, а потому что так лучше .
MasterZivSG> однозначно второй.
SG> нормальные формы придумали не от нечего делать, а потому что так лучше.

Не потому, что так лучше , а потому что без них невозможно.
По-другому никак.


:)
...
Рейтинг: 0 / 0
27.04.2012, 22:30
    #37775169
ViPRos
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как хранить атрибуты?
Dimitry Sibiryakov,

да фигня все твои индексы и т.д.
для детских задач катят
...
Рейтинг: 0 / 0
28.04.2012, 10:35
    #37775553
Vladimir Baskakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как хранить атрибуты?
Код: sql
1.
2.
3.
4.
5.
CREATE TABLE #StringsNumbers (
	ID INT,
	String NVARCHAR(32),
              Number NVARCHAR(32)
)


не? ID INT - нафиг не сдался.... по моему, ну дак ведь и не дорого....
...
Рейтинг: 0 / 0
28.04.2012, 11:16
    #37775602
sphinx_mv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как хранить атрибуты?
ViPRosDimitry Sibiryakov,

да фигня все твои индексы и т.д.
для детских задач катят
Вам не кажется, что мнение недалеких мышеводов, нечего не понимающих в базах данных, при проектировании баз данных никого не интересует?
...
Рейтинг: 0 / 0
28.04.2012, 11:24
    #37775620
Cheerful Calf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как хранить атрибуты?
MasterZivOn 04/27/2012 02:39 PM, Dimitry Sibiryakov wrote:

> MasterZiv
> А теперь замени в этой строке число 3 на число 33, и повтори.
>
>
> А заодно подумай над планом исполнения, использованием индексов и прочими
> вещами, которыми
> реальные базы отличаются от игрушечных.

Да, подумай, подумай !
Обязательно подумай !Как насчет арея из праймерикейсов?
Стринг: Стринг1
Нумберз: [1][3][33]

упомянутая проблема решена? это мелочи реализации, я спрашиваю про подход.
...
Рейтинг: 0 / 0
28.04.2012, 11:27
    #37775628
Cheerful Calf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как хранить атрибуты?
MasterZivпланом исполнения, использованием индексов и прочимиЯ в первом топике указал количество записей, на данный момент это около 700 (предельный рост до 1000)
какие "план исполнения, использование индексов" и прочее? тут даже профайлер врят ли разницу заметит между постраничным сканом и индексом.
...
Рейтинг: 0 / 0
28.04.2012, 11:44
    #37775649
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как хранить атрибуты?
> упомянутая проблема решена? это мелочи реализации, я спрашиваю про подход.

нет. Подход любого проектирования реляционной БД дожен строится прежде
всего на нормльных формах. Это не какие-то там заумные идеи, это просто
требование выживания. Без них тебе реляционная СУБД будет бесполезна.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
28.04.2012, 11:44
    #37775651
Bogdanov Andrey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как хранить атрибуты?
Cheerful CalfЯ в первом топике указал количество записей, на данный момент это около 700 (предельный рост до 1000)
какие "план исполнения, использование индексов" и прочее? тут даже профайлер врят ли разницу заметит между постраничным сканом и индексом.А зачем вообще в таком случае СУБД? Тем более реляционная?
...
Рейтинг: 0 / 0
28.04.2012, 11:45
    #37775652
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как хранить атрибуты?
On 04/28/2012 12:27 PM, Cheerful Calf wrote:

> MasterZiv
> планом исполнения, использованием индексов и прочими
>

Эт не я писал. Эт маэстро Dimitry Sibiryakov.

> Я в первом топике указал количество записей, на данный момент это около 700
> (предельный рост до 1000)
> какие "план исполнения, использование индексов" и прочее? тут даже профайлер
> врят ли разницу заметит между постраничным сканом и индексом.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
28.04.2012, 11:47
    #37775655
miwaonline
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как хранить атрибуты?
sphinx_mvViPRosDimitry Sibiryakov,

да фигня все твои индексы и т.д.
для детских задач катят
Вам не кажется, что мнение недалеких мышеводов, нечего не понимающих в базах данных, при проектировании баз данных никого не интересует?
Вам не кажеться, что следует отличать иронию специалистов от мнения недалеких мышеводов?
...
Рейтинг: 0 / 0
28.04.2012, 11:51
    #37775660
Cheerful Calf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как хранить атрибуты?
MasterZiv, Bogdanov Andrey,

в соседнем топике отписал, это имеено то, что я там указал - поле для поиска (по атрибутам).
субд - она остаётся субд со всеми нф.
...
Рейтинг: 0 / 0
28.04.2012, 12:04
    #37775690
Bogdanov Andrey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как хранить атрибуты?
Cheerful Calfв соседнем топике отписал, это имеено то, что я там указал - поле для поиска (по атрибутам).
субд - она остаётся субд со всеми нф.
Вы на вопрос "зачем вы используете РСУБД" способны ответить? Какими именно преимуществами РУСБД вы пользуетесь? Целостность вам не нужна, скорость поиска тоже.
...
Рейтинг: 0 / 0
28.04.2012, 12:10
    #37775697
Cheerful Calf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как хранить атрибуты?
Bogdanov AndreyCheerful Calfв соседнем топике отписал, это имеено то, что я там указал - поле для поиска (по атрибутам).
субд - она остаётся субд со всеми нф.
Вы на вопрос "зачем вы используете РСУБД" способны ответить? Какими именно преимуществами РУСБД вы пользуетесь? Целостность вам не нужна, скорость поиска тоже.Вы тут сами с собой? Смотрю вопрос, ответ сразу пишите...
...
Рейтинг: 0 / 0
28.04.2012, 12:18
    #37775712
Bogdanov Andrey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как хранить атрибуты?
Cheerful CalfВы тут сами с собой?Понятно. То есть ответить на вопрос не можете. Спасибо за "содержательную" беседу.
...
Рейтинг: 0 / 0
28.04.2012, 15:16
    #37776047
Vladimir Baskakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как хранить атрибуты?
Первый вариант хуже, потому что поле неатомарно. Потому, что архитектура плохо масштабируется. потому, что ассиметрия...
Второй вариант хуже - лазить в лишнюю таблицу. оба варианта, в старт-посте представленные, по моему - хуже.

Моего варианта, где и поля атомарны=>SQL - "чистый" пригодный для автогенерации, и таблиц лишних нет. Симметрия полная - хочешь с одной стороны к другой, а хочешь - наоборот...
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как хранить атрибуты? / 25 сообщений из 87, страница 1 из 4
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]