|
|
|
Сущность и наборы аттрибутов
|
|||
|---|---|---|---|
|
#18+
Есть сущность, она может иметь различные группы атрибутов. Например, есть сущность "объявление", оно может иметь наборы атрибутов как для "авто", так и для "недвижимости". Создать таблицу атрибутов с именем и значением атрибута не выход, так как значение может быть как int, так и varchar. Как лучше это сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2013, 18:39 |
|
||
|
Сущность и наборы аттрибутов
|
|||
|---|---|---|---|
|
#18+
BelyyКак лучше это сделать? Сущность "объявление" - отдельно, сущность "объявление о недвижимости" - отдельно, и "объявление об авто" - опять же отдельно. Возможно с наследованием если СУБД позволяет. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2013, 19:31 |
|
||
|
Сущность и наборы аттрибутов
|
|||
|---|---|---|---|
|
#18+
Связь будет 1-1 ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2013, 15:23 |
|
||
|
Сущность и наборы аттрибутов
|
|||
|---|---|---|---|
|
#18+
BelyyЕсть сущность, она может иметь различные группы атрибутов. Например, есть сущность "объявление", оно может иметь наборы атрибутов как для "авто", так и для "недвижимости". Создать таблицу атрибутов с именем и значением атрибута не выход, так как значение может быть как int, так и varchar... В этой таблице создают несколько колонок - под каждый возможный тип. Другое распространенное решение - своя таблица для каждого типа. См., например, drupal. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2013, 16:30 |
|
||
|
Сущность и наборы аттрибутов
|
|||
|---|---|---|---|
|
#18+
Давайте, на примере бд для доски объявлений. Объявление может быть по продаже авто, квартиры, телефона. Можно создать 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)) Жду комментарии и ваших вариантов! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2013, 01:55 |
|
||
|
Сущность и наборы аттрибутов
|
|||
|---|---|---|---|
|
#18+
BelyyЕсть сущность, она может иметь различные группы атрибутов. Например, есть сущность "объявление", оно может иметь наборы атрибутов как для "авто", так и для "недвижимости". Создать таблицу атрибутов с именем и значением атрибута не выход, так как значение может быть как int, так и varchar. Как лучше это сделать? Надо применять отношение подкатегории, оно же "наследование". N таблиц, связанных на каждом уровне наследования связью 1-0..1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2013, 02:09 |
|
||
|
Сущность и наборы аттрибутов
|
|||
|---|---|---|---|
|
#18+
можно на этом примере? 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)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2013, 02:20 |
|
||
|
Сущность и наборы аттрибутов
|
|||
|---|---|---|---|
|
#18+
Belyyможно на этом примере? Я за разные таблички... Т.к. описание объектов могут сильно разниться. Вот пример такого ОбъявленияИДДатаВремядр.поля КвартирыИДИД объявленияАдресПлощадьдр.поля ТелефоныИДИД объявленияИМЕЙИзготовительМаркадр.поля АвтотранспортИДИД объявленияМаркаМодельВИНГод выпускаЦветдр.поля ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2013, 15:46 |
|
||
|
Сущность и наборы аттрибутов
|
|||
|---|---|---|---|
|
#18+
Я за разные таблички... Т.к. описание объектов могут сильно разниться. Проблема в том, что добавление нового атрибута потребует изменение структуры таблиц. Что не есть хорошо (например для репликации). 2ТС: Покурите на тему EAV. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2013, 15:57 |
|
||
|
Сущность и наборы аттрибутов
|
|||
|---|---|---|---|
|
#18+
LSVПроблема в том, что добавление нового атрибута потребует изменение структуры таблиц. Это не проблема. LSVЧто не есть хорошо (например для репликации). А что, у какой-то кривой репликации это вызывает вопросы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2013, 16:02 |
|
||
|
Сущность и наборы аттрибутов
|
|||
|---|---|---|---|
|
#18+
LSVПроблема в том, что добавление нового атрибута потребует изменение структуры таблиц. Что не есть хорошо (например для репликации). Тогда мутить дальше... ОбъявленияИДДатаВремядр.поля Типы объявленийИДНазвание СвойстваИДНазваниеТип значения Наборы свойств для типов объявленийИДИД Типа объявленияИД Свойства Останется только сделать таблички для каждого типа значений и привязать конкретное значение к конкретному объявлению, типу и свойству... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2013, 16:10 |
|
||
|
Сущность и наборы аттрибутов
|
|||
|---|---|---|---|
|
#18+
Забыл свойство дописать... ОбъявленияИДДатаВремяИД Типа объявлениядр.поля ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2013, 16:12 |
|
||
|
Сущность и наборы аттрибутов
|
|||
|---|---|---|---|
|
#18+
krvsaBelyyможно на этом примере? Я за разные таблички... Т.к. описание объектов могут сильно разниться. Вот пример такого ОбъявленияИДДатаВремядр.поля КвартирыИДИД объявленияАдресПлощадьдр.поля ТелефоныИДИД объявленияИМЕЙИзготовительМаркадр.поля АвтотранспортИДИД объявленияМаркаМодельВИНГод выпускаЦветдр.поля но здесь же связь 1 ко многим ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2013, 18:18 |
|
||
|
Сущность и наборы аттрибутов
|
|||
|---|---|---|---|
|
#18+
Если у меня будет макс. 5 видов объявлений и около 10 атрибутов на каждый вид. С точки зрение скорости обработки, какой метод лучше: 1) для каждого вида своя таблица или 2) отдельная таблица для свойств ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2013, 19:32 |
|
||
|
Сущность и наборы аттрибутов
|
|||
|---|---|---|---|
|
#18+
Belyyно здесь же связь 1 ко многим Где ты её увидел? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2013, 19:35 |
|
||
|
Сущность и наборы аттрибутов
|
|||
|---|---|---|---|
|
#18+
BelyyС точки зрение скорости обработки, какой метод лучше Такой, в каком будет обрабатываться меньше записей... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2013, 19:36 |
|
||
|
Сущность и наборы аттрибутов
|
|||
|---|---|---|---|
|
#18+
krvsaBelyyно здесь же связь 1 ко многим Где ты её увидел? в нескольких квартир может быть один и тот же ид объявления ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2013, 19:48 |
|
||
|
Сущность и наборы аттрибутов
|
|||
|---|---|---|---|
|
#18+
BelyyЕсли у меня будет макс. 5 видов объявлений и около 10 атрибутов на каждый вид. С точки зрение скорости обработки, какой метод лучше: 1) для каждого вида своя таблица или 2) отдельная таблица для свойств ? Ваш вопрос нужно перенести в раздел по соответствующей системе обработки и хранение данных. Этот раздел не по проектированию реляционных баз данных, а по проектированию баз данных. Поэтому, лучше 3) Одна таблица для объявлений:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2013, 20:10 |
|
||
|
Сущность и наборы аттрибутов
|
|||
|---|---|---|---|
|
#18+
Belyyв нескольких квартир может быть один и тот же ид объявления В таком случае это будут два разных объявления... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2013, 08:41 |
|
||
|
Сущность и наборы аттрибутов
|
|||
|---|---|---|---|
|
#18+
А такой вариант не прокатит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2013, 09:54 |
|
||
|
Сущность и наборы аттрибутов
|
|||
|---|---|---|---|
|
#18+
Настя Рим, а зачем у Вас разделены таблицы "Строчные поля" и "Численные поля"? Структура описаний-то этих полей, скорее всего, одинакова. Вот таблицу "Поля"(то бишь значения) можно было бы разделить на 2, а описания-то зачем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2013, 11:07 |
|
||
|
Сущность и наборы аттрибутов
|
|||
|---|---|---|---|
|
#18+
softwarerА что, у какой-то кривой репликации это вызывает вопросы?Репликация имелось ввиду перенос данных из одного источника в другой (самодельный, штатный, сторонний, встроенный и пр.). И при смене структуры всегда могут возникнуть потенциальные проблемы. И не надо говорить, что никаких проблем нет. Вопросы обвязки кодом новых полей/таблиц пока опустим. Даже штатная репликация любого сервера имеет ряд проблем и неудобств. зы: Даже элементарное почтовое уведомление о успешном бекапе иногда (неск. раз в год, MSSQL) не приходит. Не приходит и всё.... :) Перегрузил агента, снова нормально ходит... (какие-то загадочные глюки в AD) А репликация в сто раз сложнее бекапа. А переменная структура еще один виток усложнения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2013, 11:38 |
|
||
|
Сущность и наборы аттрибутов
|
|||
|---|---|---|---|
|
#18+
LSVИ при смене структуры всегда могут возникнуть потенциальные проблемы. И не надо говорить, что никаких проблем нет. Изменение структуры - это штатная и регулярная ситуация в ИС. И если у инструмента в этом случае прогнозируются проблемы (более чем "сугубо потенциальные") - это, назовём так, повод задуматься. LSVА репликация в сто раз сложнее бекапа. А переменная структура еще один виток усложнения. Да ни фига это не виток. Вы так пишете, словно написать код для "десяти таблиц, каждая с постоянной структурой" проще и правильнее, нежели для переменного числа таблиц с переменной структурой. Скажем, могу рассказать, как ведёт себя мой репликатор. Во-первых, он принимает данные согласно приехавшей структуре. То есть добавили новое поле в источник и приёмник - оно автоматом подхватилось как только приехала первая запись с этим новым полем. Во-вторых, у него есть вызов "притормози ненадолго", который откладывает приём данных на десять минут - это для того, чтобы спокойно и безопасно обновить структуру данных на сервере. В-третьих, обнаружив ошибки, характерные для расползшихся структур (в источнике поле добавили, в приёмнике забыли, например), он опять же тормозит приём на десять минут и шлёт оповещение. В самом худшем случае (проблема не уходит, оповещение не проходит) данные копятся во входном буфере, и в программе мониторинга видно это нарастание (разрастается входной буфер, отставание сервера по данным уходит в "больше пятнадцати минут", то есть в область красных величин). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2013, 12:38 |
|
||
|
Сущность и наборы аттрибутов
|
|||
|---|---|---|---|
|
#18+
Кот Матроскин, предполагалось, что таблица "строчные поля" имеет поле значения типа varchar, а таблица "численные поля" имеет поле значения типа int. Непонятно, как этого эффекта с разными типами полей можно добиться, если разбить таблицу "поля". Если это возможно, и вам не сложно - нарисуйте пожалуйста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2013, 12:47 |
|
||
|
Сущность и наборы аттрибутов
|
|||
|---|---|---|---|
|
#18+
Настя РимКот Матроскин, предполагалось, что таблица "строчные поля" имеет поле значения типа varchar, а таблица "численные поля" имеет поле значения типа int. Непонятно, как этого эффекта с разными типами полей можно добиться, если разбить таблицу "поля". Если это возможно, и вам не сложно - нарисуйте пожалуйста. Я так понял, что значения полей у Вас лежат в таблице "Поля", в "числовых/строчных полях" - только описания. Нет? типа "Числовые поля" ID Название 1 Метраж 2. Цена "Поля" Обьявление Поле Значение 1 1 67,5 1 2 50000 Нет, не так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2013, 13:00 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=38110368&tid=1541406]: |
0ms |
get settings: |
11ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
43ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
65ms |
get tp. blocked users: |
2ms |
| others: | 239ms |
| total: | 394ms |

| 0 / 0 |
