目前的结构如下:
Table RowType: RowTypeID
Table RowSubType: RowSubTypeID
FK_RowTypeID
Table ColumnDef: FK_RowTypeID
FK_RowSubTypeID (nullable)
Run Code Online (Sandbox Code Playgroud)
简而言之,我将列定义映射到行。在某些情况下,这些行具有子类型,子类型将具有特定于它们的列定义。或者,我可以将那些特定于子类型的列定义挂出它们自己的表,或者我可以将 RowType 和 RowSubType 中的数据组合到一个表中并使用单个 ID,但我不确定这是否是更好的解决方案(如果有的话,我倾向于后者,因为我们最终大多会为给定的 RowType/RowSubType 拉取 ColumnDefs。
现在的设计是对SQL的亵渎吗?
如果保留当前结构,如果在 ColumnDef 中指定了 RowSubTypeID,如何保持它必须与 RowTypeID 指定的 RowType 相对应?我应该尝试用触发器强制执行此操作,还是我错过了可以解决问题的简单重新设计?
sql sql-server foreign-keys foreign-key-relationship sql-server-2008
我们已将站点转移到新服务器,现在它已经运行了三天,没有任何外键处于活动状态。
我怎么能够:
有时我在使用 BD At Work 时遇到问题。通常是当我尝试在会话关闭的情况下恢复或更新 Java 中的表时(著名的 LazyInitializatioException )。最后,有时问题是存在指向不存在的主键索引的值的外键。当发生这种情况时,惰性实体无法正确加载。
那么,有没有办法检查表数据是否将外键索引设置为不存在的主键?
对于单个列来说很容易。但我的意思是对于具有大约 10 或 20 个外键的表。
我正在使用 postgres。如果这是一个专门针对它的答案,那就更好了。=]
抱歉我的英语不好(不是母语)。
我有这2张桌子
tbl_link
pID | fID_a | fID_b | link_desc
1 | 1 | 2 | aa + bb
tbl_structure
pID | desc
1 | a
2 | b
Run Code Online (Sandbox Code Playgroud)
fID_a 和 fID_b 是 tbl_struct 中 pID 的外键 fID_a 不允许 NULL 值,而 fID_b 允许
我试图在查询结构 1 时检索结构 2 的 desc
我现在的 sql 查询看起来像这样
SELECT a.link_desc, tbl_structure.desc FROM tbl_strukture
LEFT JOIN tbl_link as a ON tbl_structure.pID = a.fID_a
LEFT JOIN tbl_link as b ON tbl_structure.pID = b.fID_b
WHERE tbl_structure.pID = 1
Run Code Online (Sandbox Code Playgroud)
但我只得到了 PID …
我有一个带有外键约束的数据库,其中 int(10) 引用 int(11)。我还有 int(11) 参考 int(10)。
他们没有任何错误。这会在未来造成问题吗?(除了整数空间不足的问题)
当尝试更改 varchar 的列大小时,我遇到了一种相关问题:
一个简单的问题,如果有人可能有此主题的经验:
是否可以在表中使用没有外键的 Hibernate(具有完整功能)...?
就我而言,我需要这个,因为我想要reverse engineering a liferay database和实体,而在liferay中,外键只会搞乱事情(Liferay不支持外键),所以如果我可以关闭外键更改,这将是一个很好的解决方案在某些休眠参数中(我知道它不起作用,所以可能需要一些解决方法)
我正在构建一个 SQLite 数据库来保存我的房地产经纪人的列表。我已经能够使用外键来识别每个代理的列表,但我想在每个代理的记录中创建一个列表;从代理商和列表之间的一对一关系转变为一对多关系。
看这里: http: //www.sqlite.org/draft/foreignkeys.html,没有提到“外键列表”字段。我正在尝试的可行吗?
我认为,作为一种解决方法,我可能会制作一个包含关系本身的表,但这似乎不是一个非常干净的解决方案。我查看了这个线程:SQLite 外键示例,但我不确定我的元素是否与他们在那里描述的多对多关系相似。
我也愿意接受有关如何做得更好的建议。我是否应该在实际列表中包含列表代理的名称,然后从那里进行查询?
CREATE TABLE listings
(
listing_id INTEGER PRIMARY KEY AUTOINCREMENT,
listing_address TEXT UNIQUE NOT NULL,
acq_date DATE
)
CREATE TABLE agent
(
agent_id INTEGER PRIMARY KEY AUTOINCREMENT,
agent_name TEXT NOT NULL,
agent_listings INTEGER,
FOREIGN KEY (agent_listings) REFERENCES listings (listing_id) NOT NULL
)
Run Code Online (Sandbox Code Playgroud) sql sqlite foreign-keys foreign-key-relationship one-to-many
我无法将外键添加到我的现有表中。publisher_id我想将表games引用中的外键添加到publishers( publisher_id)。
但是当运行下面的sql时,它说:
源列和目标列必须具有相同的数据类型,目标列上必须有索引,并且引用的数据必须存在。无法添加或更新子行:外键约束失败 (
vngarena.com.#sql-818_1b1, CONSTRAINT#sql-818_1b1_ibfk_2FOREIGN KEY (publisher_id) REFERENCESpublishers(publisher_id) ON DELETE CASCADE ON UPDATE CASCADE
sql 是:
更改表
games
添加外键 (publisher_id) 引用publishers(publisher_id) 删除级联更新级联;
这是我的数据库的图表:

更多信息:
- 表games有两条记录
- 表games有其他外键引用表gamecats( gamecat_id)
- 表gamecats有两条记录
- 表publishers没有记录
如果我在创建过程中没有命名外键,如何删除它
create table abc(
id number(10),
foreign key (id) references tab(roll)
);
Run Code Online (Sandbox Code Playgroud)
甚至
alter table abc drop foreign key mn_ibfk_1;
Run Code Online (Sandbox Code Playgroud)
不适合我。我使用的是Oracle 10g。
我有四张桌子:
1)Country:Two columns
a) country_id
b) country_name
2)State: Three columns
a) state_id
b) state_name
c) country_id(foreign key)
3)City: Three Columns
a) city_id
b) city_name
c) state_id(foreign key)
4) Doctor: 20 Columns
a) doc_id (primary key)
b) doc_name
c) email,gender age and so on
Run Code Online (Sandbox Code Playgroud)
我已经用 dara 填充了这些表。
我在 doctor 表中添加三个新列:country_id、state_id 和 city_id 作为外键。
当我将 Country_id、state_id 和 city_id 作为外键插入到该表中时,出现此错误
1452 - Cannot add or update a child row: a foreign key constraint fails (`medical_network`.`#sql-4174_45`, CONSTRAINT `#sql-4174_45_ibfk_1` FOREIGN KEY (`country_id`) REFERENCES `country` (`country_id`) …Run Code Online (Sandbox Code Playgroud) foreign-keys ×10
sql ×6
mysql ×4
constraints ×2
hibernate ×1
innodb ×1
left-join ×1
liferay ×1
one-to-many ×1
oracle ×1
postgresql ×1
primary-key ×1
sql-server ×1
sqlite ×1