Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Проектирование БД
 
 автор: Mookapek   (01.03.2009 в 18:38)   письмо автору
 
 

Имеется несколько видов объектов. У всех объектов есть одинаковые свойства, а есть разные. Каждому свойству и названию объекта соответствует отдельное поле в таблице базы данных. Так вот вопрос, как лучше сделать: одну таблицу для всех объектов или для каждого объекта отдельную таблицу?

  Ответить  
 
 автор: cheops   (02.03.2009 в 12:25)   письмо автору
 
   для: Mookapek   (01.03.2009 в 18:38)
 

Одну таблицу для всех объектов и много разных таблиц для свойств, которыми они отличаются. Причем в первую таблицу можно даже соответствующие данному объекту названия таблиц разместить - чтобы автоматизировать работу со свойствами.

  Ответить  
 
 автор: Mookapek   (02.03.2009 в 21:27)   письмо автору
 
   для: cheops   (02.03.2009 в 12:25)
 

Ммм... немного не понял. Лучше пример приведу.
Допустим, заполняются данные о "Квартире". "Квартира" - объект.
Для "Квартиры" есть такие свойства: город, адрес, общая площадь, тип балкона, количество комнат.
Допустим, заполняются данные об объекте "Офис".
Для "Офиса" есть следующие свойства: город, адрес, общая площадь, наличие парковки, наличие охраны.
У меня одна таблица, и имеет она следующие поля: Object('flat', 'office'), city, square, balcony, rooms, parking, security.
Понятно, что если выбирается квартира, то в два последних поля придется ставить пустое значение, с офисом - аналогично. Это вероятно не правильно. Так как сделать, используя пример с квартирой и офисом?

  Ответить  
 
 автор: Trianon   (02.03.2009 в 22:17)   письмо автору
 
   для: Mookapek   (02.03.2009 в 21:27)
 

Логично предложить таблицы Объект(город, район, адрес, площадь, этаж, транспорт)
Квартира(ид_объекта, балкон, комнаты, санузел)
Офис(ид_объекта, комнаты, паркинг, охрана)
Цех(ид_объекта, высота, транспортные_коммуникации, охрана)
и.т.д.
примерно понятно?

  Ответить  
 
 автор: Mookapek   (03.03.2009 в 17:51)   письмо автору
 
   для: Trianon   (02.03.2009 в 22:17)
 

Непонятно наличие таблицы Объект(город, район, адрес, площадь, этаж, транспорт).

  Ответить  
 
 автор: Mookapek   (05.03.2009 в 00:04)   письмо автору
 
   для: Mookapek   (03.03.2009 в 17:51)
 

.

  Ответить  
 
 автор: Trianon   (05.03.2009 в 00:08)   письмо автору
 
   для: Mookapek   (03.03.2009 в 17:51)
 

она описывает свойства общие для всех порожденных сущностей.

  Ответить  
 
 автор: Mookapek   (05.03.2009 в 22:36)   письмо автору
 
   для: Trianon   (05.03.2009 в 00:08)
 

Что является связующим звеном между таблицей Объект и остальными таблицами?

  Ответить  
 
 автор: Trianon   (05.03.2009 в 23:41)   письмо автору
 
   для: Mookapek   (05.03.2009 в 22:36)
 

Поля суррогатного первичного ключа (id) в каждой таблице я пропустил.
Само собой по ключу связь.

  Ответить  
 
 автор: Mookapek   (09.03.2009 в 01:42)   письмо автору
 
   для: Trianon   (05.03.2009 в 23:41)
 

Тогда же вроде так должно получится:

Объект(ид_объекта(PRI), город, район, адрес, площадь, этаж, транспорт)
Квартира(ид_объекта(MUL), балкон, комнаты, санузел)
Офис(ид_объекта(MUL), комнаты, паркинг, охрана)
Цех(ид_объекта(MUL), высота, транспортные_коммуникации, охрана)

PRI - первичный ключ
MUL - обычный индекс

Или нет?

  Ответить  
 
 автор: Mookapek   (12.03.2009 в 00:26)   письмо автору
 
   для: Mookapek   (09.03.2009 в 01:42)
 

...

  Ответить  
 
 автор: Mookapek   (24.03.2009 в 22:44)   письмо автору
 
   для: Mookapek   (12.03.2009 в 00:26)
 

.

  Ответить  
 
 автор: Trianon   (24.03.2009 в 22:48)   письмо автору
 
   для: Mookapek   (24.03.2009 в 22:44)
 

тогда уж

Объект(ид_объекта(PRI), город, район, адрес, площадь, этаж, транспорт)
Квартира(ид_квартиры(PRI), ид_объекта(MUL), балкон, комнаты, санузел)
Офис(ид_офиса(PRI), ид_объекта(MUL), комнаты, паркинг, охрана)
Цех(ид_цеха(PRI), ид_объекта(MUL), высота, транспортные_коммуникации, охрана) 

только я не понял, что значит MUL

  Ответить  
 
 автор: Mookapek   (25.03.2009 в 20:36)   письмо автору
 
   для: Trianon   (24.03.2009 в 22:48)
 

MUL - это обычный индекс. Он связывает таблицу "Объект" с остальными при помощи поля ид_объекта, которое для таблицы "Объект" будет являться первичным ключом, а для других таблиц обычным индексом.

  Ответить  
 
 автор: Trianon   (25.03.2009 в 20:45)   письмо автору
 
   для: Mookapek   (25.03.2009 в 20:36)
 

Таблицы связывают поля (ключи) , а не индексы.
Индексы лишь ускоряют поиск.
Почему обычный индекс Вы обозначаете как MUL, я не понял все равно.

  Ответить  
 
 автор: Mookapek   (25.03.2009 в 21:27)   письмо автору
 
   для: Trianon   (25.03.2009 в 20:45)
 

Почему обычный индекс Вы обозначаете как MUL, я не понял все равно.
Когда объявляешь первичный ключ, то при просмотре структуры таблицы возникает пометка PRI, а когда обычный индекс - пометка MUL.

  Ответить  
 
 автор: Mookapek   (25.03.2009 в 21:38)   письмо автору
 
   для: Mookapek   (25.03.2009 в 21:27)
 

В итоге я остановился пока на такой схеме:
Входящие данные: город, район, комнаты. Тип недвижимости соответственно "Квартира".
Запись в БД: в таблицу "Объект" запись в поля ид_объекта и город. В таблицу "Квартира" запись в поля ид_объекта(то же самое значение, что и для таблицы "Объект") и комнаты.
Как Вам такая схема?

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования