Tag: referential integrity

为什么Rails迁移定义应用程序中的外键而不是数据库中?

如果我定义了一个Customer “有很多” Orders的Customer和Order模型,并且Order “属于” Customer ,我们在Rails中通过customer_id来讨论Order有一个外部关键字,但我们并不是说这个在数据库中执行。 由于Rails没有将其定义为数据库级别的约束,因此可能在应用程序之外(或者如果您收到同时发生的请求,则在内部)违反了数据完整性的风险,除非您手动强制实施数据库中的约束。 为什么Rails没有在数据库级别定义外键,或者有没有办法让Rails做到这一点? class Customer < ActiveRecord::Base has_many :orders end class Order < ActiveRecord::Base belongs_to :customer end ActiveRecord::Schema.define(:version => 1) do create_table "customers", :force => true do |t| t.string "name" end create_table "orders", :force => true do |t| t.string "item_name" t.integer "customer_id" end end

MySQL的外键允许NULL?

我在拼凑一个图片网站。 基本模式的MySQL非常简单,但是在尝试表示与图像相关的可能的pipe理标志(“不适当”,“受版权保护”等)时遇到了一些麻烦。 我目前的想法如下: tblImages ( imageID INT UNSIGNED NOT NULL AUTO_INCREMENT, … ); tblImageFlags ( imageFlagID INT UNSIGNED NOT NULL AUTO_INCREMENT, imageID INT UNSIGNED NOT NULL, flagTypeID INT UNSIGNED NOT NULL, resolutionTypeID INT UNSIGNED NOT NULL, … ); luResolutionTypes ( resolutionTypeID INT UNSIGNED NOT NULL AUTO_INCREMENT, resolutionType VARCHAR(63) NOT NULL, … ); (截断为便于阅读;各种外键和索引是为了,我发誓) tblImageFlags.flagTypeID在标志types的查找表上被外键控制,正如您可以想象的那样, tblImageFlags.resolutionTypeID […]