3
我有三个表:SQL的执行上分台的参照完整性
property
`id` MEDIUMINT(8) UNSIGNED NOT NULL AUTO_INCREMENT,
`user_id` MEDIUMINT(8) UNSIGNED NOT NULL,
`title` VARCHAR(100) NOT NULL,
`alias_title` VARCHAR(255) NOT NULL,
`primary_category` TINYINT(3) UNSIGNED NOT NULL,
`second_category` TINYINT(3) UNSIGNED NOT NULL,
`reference_number` VARCHAR(100) NOT NULL,
`description` VARCHAR(10000) NOT NULL,
`no_of_bedrooms` TINYINT(2) UNSIGNED NOT NULL,
`no_of_bathrooms` TINYINT(2) UNSIGNED NOT NULL
property Rental
`property_id` MEDIUMINT(8) UNSIGNED NOT NULL,
`minimum_rental_months` TINYINT(2) UNSIGNED NOT NULL,
`minimum_rental_years` TINYINT(2) UNSIGNED NOT NULL,
`maximum_rental_months` TINYINT(2) UNSIGNED NOT NULL,
`maximum_rental_years` TINYINT(2) UNSIGNED NOT NULL,
`available_from` DATE NOT NULL,
`available_to` DATE NOT NULL,
`type_of_letting` TINYINT(1) UNSIGNED NOT NULL,
`price` DECIMAL(7,2) UNSIGNED NOT NULL,
`deposit` DECIMAL(7,2) UNSIGNED NOT NULL,
`additionals_included_with_rent` VARCHAR(500) NOT NULL
property Sales
`property_id` MEDIUMINT(8) UNSIGNED NOT NULL,
`price` DECIMAL(10,2) UNSIGNED NOT NULL
情况是,物业可以是出租物业或销售物业。它需要成为其他人之一。 property_id是销售和租赁中的外国财产。但是,对于这种结构,用户实际上可以创建不属于租赁或销售的财产。我需要在销售或出租表中填写一些财产。
然后,我需要查询以查找所有属性和相关的详细信息。
有人可以请让我知道确保属性必须属于租赁或销售的最佳方式。
是的,这是正确的属性可能属于销售或租赁。不过,我需要提出一个约束,指出属性必须属于这些表中的任何一个。换句话说,它必须是销售或出租物业。它不能不属于租赁或销售。目前它可以独立创建。 – 2012-08-12 10:45:09
我认为这叫做Polymorphic Associations – 2012-08-12 10:47:39
一个建议是增加出租和销售到财产表和CHECK(property_rental_id IS NOT NULL或property_sales_id不是NULL) - 有谁知道这是可能的吗? – 2012-08-12 12:29:28