create table book
(
book_ip int identity(1,1) primary key,
book_name nvarchar(20),
book_author nvarchar(20),
book_publisher nvarchar(20),
book_Type nvarchar(20),
foreign key (book_Type) references book_Type(book_Type)
)
消息 1776,级别 16,状态 0,第 1 行
在被引用表 'book_Type' 中没有与外键 'FK__book__book_Type__5070F446' 中的引用列列表匹配的主键或候选键。
消息 1750,级别 16,状态 0,第 1 行
无法创建约束。请参阅前面的错误消息。
我的book_Type表是这样的:
create table book_Type
(
book_id int identity(1,1),
book_Type nvarchar(20),
primary key(book_id,book_Type)
)
求大神指教!!!急急!很急!!
数据库设计是一门专门的学问。
但是由于需要展示,也就是需要UI来显示数据,通常很多人在软件开发技术还没有达到熟练的情况下,
设计数据库会受制于UI设计。
楼主有以下问题
1、不明白什么是关系型数据库,BOOKTYPE放在BOOKS数据表中,可以是INT,也可以是GUID,而不是你要在前台UI界面中显示的文字。
2、通常情况下,单主键的设计基本是够用的,你又通知ID当主键,又用BOOKTYPE当主键,这是多余的。
恩恩!!谢谢
1. 确认表book_Type是否存在
2. 若存在确认book_Type表主键是不是book_Type
book_Type有了,主键是book_Type和book_ip
你是否是先创建 book_Type这表,并成功了,再创建book表的?建议表名称不要与字段名称一样。
恩恩
看你的两张表结构,这么做就应该OK了:
1.把表book_type的book_id设置成主键;
2.把表book的字段book_type的类型设置为int;
3.表book的字段book_Type引用表book_type的主键book_id作为主键。
书的类型可以设置为int吗?????
@Guo47470: 你不是要关联外键吗? 表book的 book_type的类型必须和引用的表book_type的主键(book_id)的类型一致。而你设置的book_id这个字段是int类型的,所以在book表的book_type也必须是int类型的。到时关联查询就可以得到类型名了啊,也就是表book_type的book_type字段的值。
@jone_e: 恩恩!!谢谢
看下外键对引用字段的要求。主键或者是Unique键。你现在的被引用的表是联合主键,所以创建不了。建议采用@jone_e的方式使用。
恩恩!!谢谢
你的书籍类型表的主键是双主键,在书籍表里面的那个外键,必须在书籍类型里面是主键或者候选键,由于书籍类型的主键是双主键,所以book_Type不能做外键
个人觉得书籍类型表的book_id 做主键就好了,书籍表连接book_id 做外键,不过还是要看看你的需求才好确定
恩恩!!谢谢