如果有两个表:
table1具有属性a1, a2, a3和table2具有属性b1, b2, b3。和a1是b1它们各自的主键。当对两个表应用自然联接时,新的主键是什么。合并 a1, b1形成复合主键,否则它们将成为两个单独的候选键
我们正在为电子商务应用程序和网站设计数据库。我们遇到了一个障碍,使我们在搜索和实验中陷入困境,但没有一个解决方案有效,因为数据中存在冗余。
我们做了一些被拒绝的设计。我不会展示所有的设计,但我会在这里展示其中的一些设计以及我们即将实现的最后设计之一。
之后,我们尝试搜索并寻找一种能够工作并适合我们之前的设计到其他桌子的设计。我们在这里发现了一个,我们对设计做了一些修改,但它也不适合我们,因为 color_id 和 size_id 会发生冗余,而且它不是外键。
我们想要设计接受这些情况的表:
我有一种具有不同颜色和不同尺寸的产品,而且尺寸不取决于颜色,反之亦然,而且它们的价格都相同。
我有一个产品,它有不同的颜色和尺寸,但尺寸取决于颜色,例如(颜色:红色)有(尺寸:S、M、L),(颜色:黑色)有(尺寸:M、L)和他们有不同的价格。
我有一个产品,它有不同的尺寸,价格变化取决于尺寸,例如产品表(尺寸:S)和(价格:50 美元),但(尺寸:L)有(价格:100 美元)。但它没有颜色变体。
这些产品不会由我们插入,而是由一些卖家插入。颜色和尺寸将是下拉菜单中的所有选择。并且尺寸将仅根据类别显示。例如,类别上衣只有 (S、M、L...),没有其他尺寸
mysql database-design relational-database entity-attribute-value
我有一个名为“foods”和“categories”的表,但该表没有关系,我想通过另一个名为“food_category”的表连接它们。我想在食物和类别之间建立一对一的关系,也许图表看起来像这样
class Food < ApplicationRecord
has_one :category
end
class Category < ApplicationRecord
has_one :food
end
class FoodCategory < ApplicationRecord
belongs_to :category
belongs_to :food
end
Run Code Online (Sandbox Code Playgroud)
是否有可能做到这一点?
ruby postgresql activerecord ruby-on-rails relational-database
我有两个表,“警察和违规”(警察拥有警察的数据,而“违规”则包含所有违规停车的数据),其基本思想是警察可以取消任何数量的违规行为,但只有一个违规行为可以被一次取消因此,从本质上讲,它可以看作是(警察PK(用户名))1:M(违规PK(违规#))现在,违规表会将警察的用户名作为外键。现在,如果其中一位警察取消了特定的违规行为,那么还将添加该警察的用户名(取消日期和时间),而不是此名称,在违规表中它将具有空值。
问题是,当在数据库中插入一个违反项时,违反表中属于该策略的字段为NULL,而我希望避免使用此NULL值。[我的意思是,(用户名,日期,时间)只有在警察取消违规行为时才有价值,这意味着将违规状态更新为要取消。]
database null database-design relational-database database-normalization
我知道通常最好的方法是对主键使用INTEGER字段,但是不幸的是,由于使用的API,我只能使用格式为CHAR_INT的主键(例如:ABC_12345)。
我将拥有大量数据(10亿条记录),并且优先考虑查询和插入速度,使用CHAR_INT主键是否会对速度产生较大影响?还是相对可以忽略不计?
另外,为字符串的CHAR部分创建数字ID会更有效吗?因此,使用前面的示例:ABC_12345将变成类似于1_12345。我知道它们都是字符串,只是想知道仅使用数字是否有效率。
我正在使用SQLite。
谢谢!
我在互联网上的一些地方看到MySQL的未来是黯淡的.主要是人们谈论它很糟糕.MySQL真的"死了"吗?如果是这种情况..什么是数据库解决方案的好选择?我在一家小公司工作,我们使用了很多MySQL.postgre是一个很好的解决方案吗?在我去大公司的过程中学习如何使用有用的东西是什么?什么是标准的企业数据库(请不要说oracle)?
database ×4
mysql ×2
postgresql ×2
sql ×2
activerecord ×1
docker ×1
natural-join ×1
null ×1
ruby ×1
sqlite ×1