#php #mysql #database
#php #mysql #База данных
Вопрос:
Я создаю сайт, где люди могут сдавать в аренду свой дом. В настоящее время в моей базе данных есть две таблицы.
Свойства
— property_id
— адрес
— город
Удобства
— amenity_id
— amenity_name
Администратор сайта имеет возможность добавлять удобства в базу данных. Арендодатель входит на сайт, где у него есть возможность выбрать, какие удобства есть в его собственности (например, домашние животные, мебель).
Я пытаюсь найти способ связать одно или несколько удобств с одним единственным свойством. Я предполагаю, что мне нужна третья таблица, которая каким-то образом будет отслеживать, какие удобства связаны со свойствами.
Как я могу связать несколько идентификаторов amenity_id с одним идентификатором property_id?
Ответ №1:
Создайте таблицу свойств, состоящую всего из двух столбцов:
property_id
amenity_id
Первичный ключ должен состоять как из property_id, так и из amenity_id. Вы также можете добавить user_id и поле update_date, если аудит важен.
Это позволит вам связать свойство со многими удобствами.
связь внешнего ключа должна быть между:
Properties.property_id and PropertyAmentity.property_id
Amentities.amenity_id and PropertyAmenity.amenity_id
Пример:
Property:
property_id address city
100 Property 1 St. NY
101 Property 2 St. NY
Amenity:
amenity_id amenity_name
100 Central Air
200 Swimming Pool
PropertyAmenity
property_id amenity_id
100 100
100 200
101 100
В приведенном выше примере свойство 1 имеет как центральное кондиционирование, так и бассейн, в то время как свойство 2 имеет только центральное кондиционирование.
Чтобы выбрать удобства для данного свойства, вы можете написать sql, например:
Select a.* from Property p, PropertyAmenity pa, Amenity a
where p.property_id = pa.property_id
and pa.amenity_id = a.amenity_id
and p.property_id = 100
Комментарии:
1. Прежде всего, спасибо за помощь! Я вроде понимаю, что вы говорите, но мне трудно все это визуализировать. Не могли бы вы, пожалуйста, показать мне пример со значениями для разных таблиц, чтобы я мог видеть, как они соотносятся друг с другом? Кроме того, какой оператор sql необходим для ВЫБОРА всех удобств для определенного свойства? Я не совсем понимаю приведенный вами пример кода.
2. Спасибо за отличный пример! Ваш пример кода php? Я не уверен, что не распознаю некоторые команды, такие как буквы «a» и «pa». Что это такое?
3. в качестве примера приведены примеры данных, которые у вас будут в таблице, и sql для выбора удобств объекта. Я верю, что это то, о чем вы просили.