|
|
|
| Имеется несколько видов объектов. У всех объектов есть одинаковые свойства, а есть разные. Каждому свойству и названию объекта соответствует отдельное поле в таблице базы данных. Так вот вопрос, как лучше сделать: одну таблицу для всех объектов или для каждого объекта отдельную таблицу? | |
|
|
|
|
|
|
|
для: Mookapek
(01.03.2009 в 18:38)
| | Одну таблицу для всех объектов и много разных таблиц для свойств, которыми они отличаются. Причем в первую таблицу можно даже соответствующие данному объекту названия таблиц разместить - чтобы автоматизировать работу со свойствами. | |
|
|
|
|
|
|
|
для: cheops
(02.03.2009 в 12:25)
| | Ммм... немного не понял. Лучше пример приведу.
Допустим, заполняются данные о "Квартире". "Квартира" - объект.
Для "Квартиры" есть такие свойства: город, адрес, общая площадь, тип балкона, количество комнат.
Допустим, заполняются данные об объекте "Офис".
Для "Офиса" есть следующие свойства: город, адрес, общая площадь, наличие парковки, наличие охраны.
У меня одна таблица, и имеет она следующие поля: Object('flat', 'office'), city, square, balcony, rooms, parking, security.
Понятно, что если выбирается квартира, то в два последних поля придется ставить пустое значение, с офисом - аналогично. Это вероятно не правильно. Так как сделать, используя пример с квартирой и офисом? | |
|
|
|
|
|
|
|
для: Mookapek
(02.03.2009 в 21:27)
| | Логично предложить таблицы Объект(город, район, адрес, площадь, этаж, транспорт)
Квартира(ид_объекта, балкон, комнаты, санузел)
Офис(ид_объекта, комнаты, паркинг, охрана)
Цех(ид_объекта, высота, транспортные_коммуникации, охрана)
и.т.д.
примерно понятно? | |
|
|
|
|
|
|
|
для: Trianon
(02.03.2009 в 22:17)
| | Непонятно наличие таблицы Объект(город, район, адрес, площадь, этаж, транспорт). | |
|
|
|
|
|
|
|
для: Mookapek
(03.03.2009 в 17:51)
| | . | |
|
|
|
|
|
|
|
для: Mookapek
(03.03.2009 в 17:51)
| | она описывает свойства общие для всех порожденных сущностей. | |
|
|
|
|
|
|
|
для: Trianon
(05.03.2009 в 00:08)
| | Что является связующим звеном между таблицей Объект и остальными таблицами? | |
|
|
|
|
|
|
|
для: Mookapek
(05.03.2009 в 22:36)
| | Поля суррогатного первичного ключа (id) в каждой таблице я пропустил.
Само собой по ключу связь. | |
|
|
|
|
|
|
|
для: Trianon
(05.03.2009 в 23:41)
| | Тогда же вроде так должно получится:
Объект(ид_объекта(PRI), город, район, адрес, площадь, этаж, транспорт)
Квартира(ид_объекта(MUL), балкон, комнаты, санузел)
Офис(ид_объекта(MUL), комнаты, паркинг, охрана)
Цех(ид_объекта(MUL), высота, транспортные_коммуникации, охрана)
|
PRI - первичный ключ
MUL - обычный индекс
Или нет? | |
|
|
|
|
|
|
|
для: Mookapek
(09.03.2009 в 01:42)
| | ... | |
|
|
|
|
|
|
|
для: Mookapek
(12.03.2009 в 00:26)
| | . | |
|
|
|
|
|
|
|
для: Mookapek
(24.03.2009 в 22:44)
| | тогда уж
Объект(ид_объекта(PRI), город, район, адрес, площадь, этаж, транспорт)
Квартира(ид_квартиры(PRI), ид_объекта(MUL), балкон, комнаты, санузел)
Офис(ид_офиса(PRI), ид_объекта(MUL), комнаты, паркинг, охрана)
Цех(ид_цеха(PRI), ид_объекта(MUL), высота, транспортные_коммуникации, охрана)
|
только я не понял, что значит MUL | |
|
|
|
|
|
|
|
для: Trianon
(24.03.2009 в 22:48)
| | MUL - это обычный индекс. Он связывает таблицу "Объект" с остальными при помощи поля ид_объекта, которое для таблицы "Объект" будет являться первичным ключом, а для других таблиц обычным индексом. | |
|
|
|
|
|
|
|
для: Mookapek
(25.03.2009 в 20:36)
| | Таблицы связывают поля (ключи) , а не индексы.
Индексы лишь ускоряют поиск.
Почему обычный индекс Вы обозначаете как MUL, я не понял все равно. | |
|
|
|
|
|
|
|
для: Trianon
(25.03.2009 в 20:45)
| | Почему обычный индекс Вы обозначаете как MUL, я не понял все равно.
Когда объявляешь первичный ключ, то при просмотре структуры таблицы возникает пометка PRI, а когда обычный индекс - пометка MUL. | |
|
|
|
|
|
|
|
для: Mookapek
(25.03.2009 в 21:27)
| | В итоге я остановился пока на такой схеме:
Входящие данные: город, район, комнаты. Тип недвижимости соответственно "Квартира".
Запись в БД: в таблицу "Объект" запись в поля ид_объекта и город. В таблицу "Квартира" запись в поля ид_объекта(то же самое значение, что и для таблицы "Объект") и комнаты.
Как Вам такая схема? | |
|
|
|