Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Сущность и наборы аттрибутов / 25 сообщений из 27, страница 1 из 2
12.01.2013, 18:39
    #38107694
Belyy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сущность и наборы аттрибутов
Есть сущность, она может иметь различные группы атрибутов. Например, есть сущность "объявление", оно может иметь наборы атрибутов как для "авто", так и для "недвижимости". Создать таблицу атрибутов с именем и значением атрибута не выход, так как значение может быть как int, так и varchar. Как лучше это сделать?
...
Рейтинг: 0 / 0
12.01.2013, 19:31
    #38107748
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сущность и наборы аттрибутов
BelyyКак лучше это сделать?
Сущность "объявление" - отдельно, сущность "объявление о недвижимости" - отдельно, и
"объявление об авто" - опять же отдельно. Возможно с наследованием если СУБД позволяет.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
13.01.2013, 15:23
    #38108287
Belyy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сущность и наборы аттрибутов
Связь будет 1-1 ?
...
Рейтинг: 0 / 0
13.01.2013, 16:30
    #38108330
Бредятина
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сущность и наборы аттрибутов
BelyyЕсть сущность, она может иметь различные группы атрибутов. Например, есть сущность "объявление", оно может иметь наборы атрибутов как для "авто", так и для "недвижимости". Создать таблицу атрибутов с именем и значением атрибута не выход, так как значение может быть как int, так и varchar...
В этой таблице создают несколько колонок - под каждый возможный тип.
Другое распространенное решение - своя таблица для каждого типа.
См., например, drupal.
...
Рейтинг: 0 / 0
14.01.2013, 01:55
    #38108674
Belyy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сущность и наборы аттрибутов
Давайте, на примере бд для доски объявлений.
Объявление может быть по продаже авто, квартиры, телефона.
Можно создать 1 таблицу, Объявление, с полями для всех 3 видов объявлений ( тип кузова, количество комнат, память ). Но если таких атрибутов будет по 10 для каждого вида объявления ( так же около 10 ), получается примерно 100 столбцов в таблице, в каждой строке которой, будет 90 из 100 пустых. Вот вообщем и сама проблема!
СУБД MySQL, вариант 1:
для каждого вида объявления создать собственную таблицу ( авто, квартира, телефон ) и просто создать таблицу - объявление.
Связь 1 к 1.
Таблица "Объявление": create table ad( id int not null auto_increment, date datetime, primary key(id))
Таблица "Авто": create table auto( id int not null, type int not null, primary key(id), foreign key(id) references ad(id))

Жду комментарии и ваших вариантов!
...
Рейтинг: 0 / 0
14.01.2013, 02:09
    #38108676
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сущность и наборы аттрибутов
BelyyЕсть сущность, она может иметь различные группы атрибутов. Например, есть сущность "объявление", оно может иметь наборы атрибутов как для "авто", так и для "недвижимости". Создать таблицу атрибутов с именем и значением атрибута не выход, так как значение может быть как int, так и varchar. Как лучше это сделать?

Надо применять отношение подкатегории, оно же "наследование".
N таблиц, связанных на каждом уровне наследования связью 1-0..1.
...
Рейтинг: 0 / 0
14.01.2013, 02:20
    #38108680
Belyy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сущность и наборы аттрибутов
можно на этом примере?
BelyyДавайте, на примере бд для доски объявлений.
Объявление может быть по продаже авто, квартиры, телефона.
Можно создать 1 таблицу, Объявление, с полями для всех 3 видов объявлений ( тип кузова, количество комнат, память ). Но если таких атрибутов будет по 10 для каждого вида объявления ( так же около 10 ), получается примерно 100 столбцов в таблице, в каждой строке которой, будет 90 из 100 пустых. Вот вообщем и сама проблема!
СУБД MySQL, вариант 1:
для каждого вида объявления создать собственную таблицу ( авто, квартира, телефон ) и просто создать таблицу - объявление.
Связь 1 к 1.
Таблица "Объявление": create table ad( id int not null auto_increment, date datetime, primary key(id))
Таблица "Авто": create table auto( id int not null, type int not null, primary key(id), foreign key(id) references ad(id))
...
Рейтинг: 0 / 0
14.01.2013, 15:46
    #38109471
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сущность и наборы аттрибутов
Belyyможно на этом примере?
Я за разные таблички... Т.к. описание объектов могут сильно разниться.
Вот пример такого

ОбъявленияИДДатаВремядр.поля
КвартирыИДИД объявленияАдресПлощадьдр.поля
ТелефоныИДИД объявленияИМЕЙИзготовительМаркадр.поля
АвтотранспортИДИД объявленияМаркаМодельВИНГод выпускаЦветдр.поля
...
Рейтинг: 0 / 0
14.01.2013, 15:57
    #38109501
LSV
LSV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сущность и наборы аттрибутов
Я за разные таблички... Т.к. описание объектов могут сильно разниться. Проблема в том, что добавление нового атрибута потребует изменение структуры таблиц. Что не есть хорошо (например для репликации).

2ТС: Покурите на тему EAV.
...
Рейтинг: 0 / 0
14.01.2013, 16:02
    #38109509
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сущность и наборы аттрибутов
LSVПроблема в том, что добавление нового атрибута потребует изменение структуры таблиц.
Это не проблема.

LSVЧто не есть хорошо (например для репликации).
А что, у какой-то кривой репликации это вызывает вопросы?
...
Рейтинг: 0 / 0
14.01.2013, 16:10
    #38109527
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сущность и наборы аттрибутов
LSVПроблема в том, что добавление нового атрибута потребует изменение структуры таблиц. Что не есть хорошо (например для репликации).
Тогда мутить дальше...

ОбъявленияИДДатаВремядр.поля
Типы объявленийИДНазвание
СвойстваИДНазваниеТип значения
Наборы свойств для типов объявленийИДИД Типа объявленияИД Свойства
Останется только сделать таблички для каждого типа значений и привязать конкретное значение к конкретному объявлению, типу и свойству...
...
Рейтинг: 0 / 0
14.01.2013, 16:12
    #38109531
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сущность и наборы аттрибутов
Забыл свойство дописать...

ОбъявленияИДДатаВремяИД Типа объявлениядр.поля
...
Рейтинг: 0 / 0
14.01.2013, 18:18
    #38109786
Belyy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сущность и наборы аттрибутов
krvsaBelyyможно на этом примере?
Я за разные таблички... Т.к. описание объектов могут сильно разниться.
Вот пример такого

ОбъявленияИДДатаВремядр.поля
КвартирыИДИД объявленияАдресПлощадьдр.поля
ТелефоныИДИД объявленияИМЕЙИзготовительМаркадр.поля
АвтотранспортИДИД объявленияМаркаМодельВИНГод выпускаЦветдр.поля
но здесь же связь 1 ко многим
...
Рейтинг: 0 / 0
14.01.2013, 19:32
    #38109891
Belyy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сущность и наборы аттрибутов
Если у меня будет макс. 5 видов объявлений и около 10 атрибутов на каждый вид. С точки зрение скорости обработки, какой метод лучше: 1) для каждого вида своя таблица или 2) отдельная таблица для свойств ?
...
Рейтинг: 0 / 0
14.01.2013, 19:35
    #38109898
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сущность и наборы аттрибутов
Belyyно здесь же связь 1 ко многим
Где ты её увидел?
...
Рейтинг: 0 / 0
14.01.2013, 19:36
    #38109900
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сущность и наборы аттрибутов
BelyyС точки зрение скорости обработки, какой метод лучше
Такой, в каком будет обрабатываться меньше записей...
...
Рейтинг: 0 / 0
14.01.2013, 19:48
    #38109920
Belyy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сущность и наборы аттрибутов
krvsaBelyyно здесь же связь 1 ко многим
Где ты её увидел?
в нескольких квартир может быть один и тот же ид объявления
...
Рейтинг: 0 / 0
14.01.2013, 20:10
    #38109936
Бредятина
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сущность и наборы аттрибутов
BelyyЕсли у меня будет макс. 5 видов объявлений и около 10 атрибутов на каждый вид. С точки зрение скорости обработки, какой метод лучше: 1) для каждого вида своя таблица или 2) отдельная таблица для свойств ?
Ваш вопрос нужно перенести в раздел по соответствующей системе обработки и хранение данных. Этот раздел не по проектированию реляционных баз данных, а по проектированию баз данных. Поэтому, лучше 3) Одна таблица для объявлений:)
...
Рейтинг: 0 / 0
15.01.2013, 08:41
    #38110242
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сущность и наборы аттрибутов
Belyyв нескольких квартир может быть один и тот же ид объявления
В таком случае это будут два разных объявления...
...
Рейтинг: 0 / 0
15.01.2013, 09:54
    #38110290
Настя Рим
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сущность и наборы аттрибутов
А такой вариант не прокатит?
...
Рейтинг: 0 / 0
15.01.2013, 11:07
    #38110368
Кот Матроскин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сущность и наборы аттрибутов
Настя Рим,

а зачем у Вас разделены таблицы "Строчные поля" и "Численные поля"? Структура описаний-то этих полей, скорее всего, одинакова. Вот таблицу "Поля"(то бишь значения) можно было бы разделить на 2, а описания-то зачем?
...
Рейтинг: 0 / 0
15.01.2013, 11:38
    #38110418
LSV
LSV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сущность и наборы аттрибутов
softwarerА что, у какой-то кривой репликации это вызывает вопросы?Репликация имелось ввиду перенос данных из одного источника в другой (самодельный, штатный, сторонний, встроенный и пр.). И при смене структуры всегда могут возникнуть потенциальные проблемы.
И не надо говорить, что никаких проблем нет.
Вопросы обвязки кодом новых полей/таблиц пока опустим.
Даже штатная репликация любого сервера имеет ряд проблем и неудобств.

зы: Даже элементарное почтовое уведомление о успешном бекапе иногда (неск. раз в год, MSSQL) не приходит. Не приходит и всё.... :) Перегрузил агента, снова нормально ходит... (какие-то загадочные глюки в AD)
А репликация в сто раз сложнее бекапа. А переменная структура еще один виток усложнения.
...
Рейтинг: 0 / 0
15.01.2013, 12:38
    #38110519
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сущность и наборы аттрибутов
LSVИ при смене структуры всегда могут возникнуть потенциальные проблемы. И не надо говорить, что никаких проблем нет.
Изменение структуры - это штатная и регулярная ситуация в ИС. И если у инструмента в этом случае прогнозируются проблемы (более чем "сугубо потенциальные") - это, назовём так, повод задуматься.

LSVА репликация в сто раз сложнее бекапа. А переменная структура еще один виток усложнения.
Да ни фига это не виток. Вы так пишете, словно написать код для "десяти таблиц, каждая с постоянной структурой" проще и правильнее, нежели для переменного числа таблиц с переменной структурой. Скажем, могу рассказать, как ведёт себя мой репликатор. Во-первых, он принимает данные согласно приехавшей структуре. То есть добавили новое поле в источник и приёмник - оно автоматом подхватилось как только приехала первая запись с этим новым полем. Во-вторых, у него есть вызов "притормози ненадолго", который откладывает приём данных на десять минут - это для того, чтобы спокойно и безопасно обновить структуру данных на сервере. В-третьих, обнаружив ошибки, характерные для расползшихся структур (в источнике поле добавили, в приёмнике забыли, например), он опять же тормозит приём на десять минут и шлёт оповещение. В самом худшем случае (проблема не уходит, оповещение не проходит) данные копятся во входном буфере, и в программе мониторинга видно это нарастание (разрастается входной буфер, отставание сервера по данным уходит в "больше пятнадцати минут", то есть в область красных величин).
...
Рейтинг: 0 / 0
15.01.2013, 12:47
    #38110527
Настя Рим
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сущность и наборы аттрибутов
Кот Матроскин, предполагалось, что таблица "строчные поля" имеет поле значения типа varchar, а таблица "численные поля" имеет поле значения типа int.
Непонятно, как этого эффекта с разными типами полей можно добиться, если разбить таблицу "поля".
Если это возможно, и вам не сложно - нарисуйте пожалуйста.
...
Рейтинг: 0 / 0
15.01.2013, 13:00
    #38110546
Кот Матроскин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сущность и наборы аттрибутов
Настя РимКот Матроскин, предполагалось, что таблица "строчные поля" имеет поле значения типа varchar, а таблица "численные поля" имеет поле значения типа int.
Непонятно, как этого эффекта с разными типами полей можно добиться, если разбить таблицу "поля".
Если это возможно, и вам не сложно - нарисуйте пожалуйста.

Я так понял, что значения полей у Вас лежат в таблице "Поля", в "числовых/строчных полях" - только описания. Нет?

типа
"Числовые поля"
ID Название
1 Метраж
2. Цена


"Поля"
Обьявление Поле Значение
1 1 67,5
1 2 50000


Нет, не так?
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Сущность и наборы аттрибутов / 25 сообщений из 27, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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