首页 新闻 会员 周边 捐助

c#图书馆管理系统

0
悬赏园豆:50 [已解决问题] 解决于 2013-10-26 12:13

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)
)
求大神指教!!!急急!很急!!

Guo47470的主页 Guo47470 | 初学一级 | 园豆:53
提问于:2013-10-26 09:11
< >
分享
最佳答案
0

数据库设计是一门专门的学问。

但是由于需要展示,也就是需要UI来显示数据,通常很多人在软件开发技术还没有达到熟练的情况下,

设计数据库会受制于UI设计。

楼主有以下问题

1、不明白什么是关系型数据库,BOOKTYPE放在BOOKS数据表中,可以是INT,也可以是GUID,而不是你要在前台UI界面中显示的文字。

2、通常情况下,单主键的设计基本是够用的,你又通知ID当主键,又用BOOKTYPE当主键,这是多余的。

收获园豆:20
爱编程的大叔 | 高人七级 |园豆:30844 | 2013-10-26 11:12

恩恩!!谢谢

Guo47470 | 园豆:53 (初学一级) | 2013-10-26 12:10
其他回答(5)
0

1. 确认表book_Type是否存在

2. 若存在确认book_Type表主键是不是book_Type

Jairo Jin | 园豆:204 (菜鸟二级) | 2013-10-26 09:15

book_Type有了,主键是book_Type和book_ip

支持(0) 反对(0) Guo47470 | 园豆:53 (初学一级) | 2013-10-26 09:44
0

你是否是先创建 book_Type这表,并成功了,再创建book表的?建议表名称不要与字段名称一样。

悟行 | 园豆:12559 (专家六级) | 2013-10-26 09:18

恩恩

支持(0) 反对(0) Guo47470 | 园豆:53 (初学一级) | 2013-10-26 09:45
0

看你的两张表结构,这么做就应该OK了:

1.把表book_type的book_id设置成主键;

2.把表book的字段book_type的类型设置为int;

3.表book的字段book_Type引用表book_type的主键book_id作为主键。

收获园豆:10
jone_e | 园豆:1410 (小虾三级) | 2013-10-26 09:32

书的类型可以设置为int吗?????

支持(0) 反对(0) Guo47470 | 园豆:53 (初学一级) | 2013-10-26 09:47

@Guo47470: 你不是要关联外键吗? 表book的 book_type的类型必须和引用的表book_type的主键(book_id)的类型一致。而你设置的book_id这个字段是int类型的,所以在book表的book_type也必须是int类型的。到时关联查询就可以得到类型名了啊,也就是表book_type的book_type字段的值。

支持(0) 反对(0) jone_e | 园豆:1410 (小虾三级) | 2013-10-26 10:46

@jone_e: 恩恩!!谢谢

支持(0) 反对(0) Guo47470 | 园豆:53 (初学一级) | 2013-10-26 12:10
0

看下外键对引用字段的要求。主键或者是Unique键。你现在的被引用的表是联合主键,所以创建不了。建议采用@jone_e的方式使用。

幻天芒 | 园豆:37207 (高人七级) | 2013-10-26 10:12

恩恩!!谢谢

支持(0) 反对(0) Guo47470 | 园豆:53 (初学一级) | 2013-10-26 12:10
0

你的书籍类型表的主键是双主键,在书籍表里面的那个外键,必须在书籍类型里面是主键或者候选键,由于书籍类型的主键是双主键,所以book_Type不能做外键

 

个人觉得书籍类型表的book_id 做主键就好了,书籍表连接book_id 做外键,不过还是要看看你的需求才好确定

收获园豆:20
雾里小梅花 | 园豆:137 (初学一级) | 2013-10-26 11:26

恩恩!!谢谢

支持(0) 反对(0) Guo47470 | 园豆:53 (初学一级) | 2013-10-26 12:10
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册