2013-03-21 60 views
3

我正在设计一个网站UI(注册,登录,编辑配置文件,编辑地址等)。数据库设计和参照完整性

我已经创建了下列表格。我的问题是,有没有多余的列或表?另外,考虑到用户可能添加/编辑另一个地址的事实,哪些列将是主键,哪些列将是外键?

我用三个下拉列表为CountryCode(移动号码) - 从ACountryCountryCodeCountry(对于地址)填充 - 从Country Name人口从ACountryState(对于地址) - 从AstateStateName填充。其中,国家代码下拉列表在注册页面上。另外两个位于用户登录后显示的地址簿页面上。AUser & AUserAddress表将存储数据。

我不知道我将如何加入这些表格。我是否包含足够/更多/更少的列?我应该做什么改变。

UPDATE1: 我已将数据库更新到以下表/列。现在我该如何建立国家代码&国家代码(标记)之间的关系......或者我应该从AUser中删除CountryCode。如果我保留两张表,我将在两个地方存储数据。我不想这样做......问题是国家代码的格式。它的名称和拨号代码(例如印度(+91))。如果我从AUser中删除该列,我将如何存储移动号码。然后? 可能是我必须打破国家代码字符串,并删除拨号代码部分,并将其与移动号码存储。在移动列中。这听起来太复杂了。

enter image description here

回答

2

你没有得到正确的唯一关系是AUserACountry之间。目前,您在AUser上有CountryCode。那应该是CountryID,因为这是ACountry的主键。

另外,不应该AUserAddress有​​而不是State?如果是这种情况,则不需要在该表上同时有​​和CountryID,您可以通过查看​​列中引用的相应State来确定用户的国家。

+0

但是,如何(我在哪里)存储手机号码的国家代码。 国家代码字段具有这样的值:印度(+91) – adityawho 2013-03-21 09:03:07

+0

@AdityaNandandar您必须将“CountryID”链接到“AUser”,然后您可以将“电话代码”存储在“国家/地区”专栏(我推测这就是'CountryCode'是什么) – mattytommo 2013-03-21 09:05:57

+0

好的感谢关于stateID的东西...... – adityawho 2013-03-21 09:06:21