我正在创建一个数据库表,并且没有为其分配逻辑主键.所以,我正考虑在没有主键的情况下离开它,但我对此感到有点内疚.我是不是该?
每个表都应该有一个主键吗?
在数据库中建模继承的最佳实践是什么?
权衡取舍(例如可疑性)是什么?
(我对SQL Server和.NET最感兴趣,但我也想了解其他平台如何解决这个问题.)
我的数据库中有3个相关表.
CREATE TABLE dbo.Group
(
ID int NOT NULL,
Name varchar(50) NOT NULL
)
CREATE TABLE dbo.User
(
ID int NOT NULL,
Name varchar(50) NOT NULL
)
CREATE TABLE dbo.Ticket
(
ID int NOT NULL,
Owner int NOT NULL,
Subject varchar(50) NULL
)
Run Code Online (Sandbox Code Playgroud)
用户属于多个组.这是通过多对多关系完成的,但在这种情况下无关紧要.票证可以由组或用户通过dbo.Ticket.Owner字段拥有.
什么是最正确的方式描述故障单和可选的用户或组之间的这种关系?
我想我应该在票证表中添加一个标志,说明拥有它的类型.
我有3种类型的用户:
每种用户类型将具有不同的用户界面并访问不同类型的数据.他们唯一的相似之处在于他们使用的是一个Web应用程序,但是他们可以访 将它们全部放在像tbl_users这样的用户表中是否更好?或者创建tbl_admins,tbl_suppliers,tbl_employees是否更好?
mysql database user-interface database-design relational-database
我想编写一个类,其中包含不止一种类型的多个字段,但是在任何时候,实例对象中只有一个字段具有非null值。
到目前为止,我所做的事情看起来并不十分干净。
class ExclusiveField {
private BigInteger numericParam;
private String stringParam;
private LocalDateTime dateParam;
public void setNumericParam(BigInteger numericParam) {
unsetAll();
this.numericParam = Objects.requireNonNull(numericParam);
}
public void setStringParam(String stringParam) {
unsetAll();
this.stringParam = Objects.requireNonNull(stringParam);
}
public void setDateParam(LocalDateTime dateParam) {
unsetAll();
this.dateParam = Objects.requireNonNull(dateParam);
}
private void unsetAll() {
this.numericParam = null;
this.stringParam = null;
this.dateParam = null;
}
}
Run Code Online (Sandbox Code Playgroud)
Java是否以某种方式支持此模式,或者有更合适的方法来实现?
我有一个带有主键的表1 user_id和user_id带有外键的表2 .
user_id表2中每个只能存在1条记录,没有它就不能存在记录.
问题:user_id表2中可以同时包含外键和主键,如果是,那么它是一个好主意,有什么利弊?
mysql foreign-keys primary-key foreign-key-relationship primary-key-design
假设您正在设置数据库来存储各种车辆的碰撞测试数据.您想存储快艇,汽车和卡丁车的碰撞测试数据.
您可以创建三个单独的表:SpeedboatTests,CarTests和GokartTests.但是每个表中的很多列都是相同的(例如,执行测试的人员的员工ID,碰撞的方向(正面,侧面,后面)等).但是,很多列都会有所不同,因此您不希望将所有测试数据放在一个表中,因为您将拥有相当多的列,对于快艇来说总是为空,相当多的列始终是对于汽车来说是零,而对于卡丁车来说,相当多的都是空的.
假设您还想存储一些与测试没有直接关系的信息(例如正在测试的东西的设计者的员工ID).这些列根本不适合放入"测试"表,特别是因为它们将在同一车辆上的所有测试中重复使用.
让我说明一种可能的表格排列,以便您可以看到所涉及的问题.
Speedboats id | col_about_speedboats_but_not_tests1 | col_about_speedboats_but_not_tests2 Cars id | col_about_cars_but_not_tests1 | col_about_cars_but_not_tests2 Gokarts id | col_about_gokarts_but_not_tests1 | col_about_gokarts_but_not_tests2 Tests id | type | id_in_type | col_about_all_tests1 | col_about_all_tests2 (id_in_type will refer to the id column of one of the next three tables, depending on the value of type) SpeedboatTests id | speedboat_id | col_about_speedboat_tests1 | col_about_speedboat_tests2 CarTests id | car_id | col_about_car_tests1 | col_about_car_tests2 GokartTests id | gokart_id | col_about_gokart_tests1 | col_about_gokart_tests2
这个结构的优点/缺点是什么,实现这样的优先方式是什么?
如果还有一些信息适用于您希望在车辆表中使用的所有车辆,该怎么办?那么CarTests表看起来像......
id | …
database-design polymorphic-associations class-table-inheritance
我正在尝试设计具有私人聊天和群聊功能的数据库架构。这是我到目前为止所得到的:
所以 - 理论是,即使用户只是在一对一的私人聊天中,他们仍然会被分配一个“roomID”,他们发送的每条消息都指向那个room。
要找出他们参与的所有房间,我可以从表中选择一个列表participants来找出。
这没关系,但是我觉得这张room桌子有点多余,因为我真的不需要房间名称,我可以省略它,只需使用participants桌子并SELECT DISTINCT roomID FROM particpants找出各个房间。
谁能向我解释一个更好的结构或为什么我应该保留房间桌子?
我有一个包含多个表的SQL数据库:A,B,C,D.这些表中的实体是完全不同的东西,具有不同的列,以及它们之间的不同类型的关系.
然而,它们都有一个共同点:在这种情况下,对评论系统的需求将具有相同的结构:author_id,date,content等.
我想知道哪种策略最适合这种模式使用A,.. D表使用注释系统.在一个经典的"博客"网站中,我会在"评论"表中使用一对多的关系与post_id.
这看起来我需要一个A_comments,B_comments等表来处理这个问题,这看起来有点奇怪.
有没有更好的办法 ?
在 Django 中,是否有一个简单的替代多表继承来实现下面描述的基本数据模型模式?
请考虑下图中非常基本的数据模型模式,它基于例如Hay, 1996。
简单地说:Organizationsand Personsare Parties,并且Parties都有Addresses 。类似的模式可能适用于许多其他情况。
这里的重点是 与Address具有显式关系Party,而不是与各个子模型Organization和具有显式关系Person。
请注意,每个子模型都引入了额外的字段(此处未描述,但请参阅下面的代码示例)。
这个具体的例子有几个明显的缺点,但这不是重点。为便于讨论,假设该模式完美地描述了我们希望实现的目标,因此剩下的唯一问题是如何在 Django 中实现该模式。
我相信,最明显的实现将使用多表继承:
class Party(models.Model):
""" Note this is a concrete model, not an abstract one. """
name = models.CharField(max_length=20)
class Organization(Party):
"""
Note that a one-to-one relation 'party_ptr' is automatically added,
and this is used as the primary key (the …Run Code Online (Sandbox Code Playgroud) python django inheritance data-modeling single-table-inheritance
database ×3
mysql ×3
inheritance ×2
sql-server ×2
.net ×1
django ×1
foreign-keys ×1
java ×1
oop ×1
primary-key ×1
python ×1
schema ×1
sql ×1