0

将我的数据视为按类别分隔的库存清单。当我开始时,我有一个应该分成两个表的表,否则在 oldTable 中,给定行中的列将是不相关的。我在我的数据库中创建了两个新表,一个用于类别,另一个用于数据/项目。现在我正在尝试使用 oldTable 现有数据来填充 newTable 数据/项目表,这样我就可以学习 SQL 而不必手动执行它。我手动填写的类别表,因为我看不到其他方法。

旧表有:

tableName (
  id, 
  categoryA, 
  categoryB, 
  categoryC, 
  categoryD, 
  categoryE, 
  categoryF,  
  isPriorityA, 
  isPriorityB, 
  isPriorityC, 
  isPriorityD, 
  isPriorityE, 
  isPriorityE
)

新表有:

Categories (
 cat_id, 
  name
)

dataItem (
  item_id, 
  cat_id, 
  name, 
  priority, 
  description, 
  URL
)

如何强制新的 dataItem 表要求匹配表列cat_id中的值之一?Categories.cat_id如果在范围之外添加值,也许会给出错误?我相信这可能是映射或链接表,从而使它们成为关系表。如何按字母顺序一次将 tableName 数据复制到 dataItem 表中的一列,带来名称、优先级并允许它自动增加item_id值?

4

1 回答 1

0

听起来您想使用外键将 dataItem.cat_id 限制为 Categories.cat_Id 中的值。像这样的东西:

ALTER TABLE dataItem ADD FOREIGN KEY (cat_id) REFERENCES Categories(cat_id);

确切的语法可能取决于您使用的数据库。有关外键的更多信息,请参见:http ://www.w3schools.com/sql/sql_foreignkey.asp

于 2012-07-14T21:23:59.517 回答