我正在创建一个数据库表,并且没有为其分配逻辑主键.所以,我正考虑在没有主键的情况下离开它,但我对此感到有点内疚.我是不是该?
每个表都应该有一个主键吗?
我目前正在为我们团队的项目设计数据库结构.我目前心中有这样一个问题:是否有可能将外键作为另一个表的主键?
以下是我们系统数据库设计的一些表格:
user_accounts
students
guidance_counselors
Run Code Online (Sandbox Code Playgroud)
我想要发生的是,该user_accounts表应包含ID(据称是系统的登录凭证)以及学生用户和指导顾问用户的密码.简而言之,students和guidance_counselors表的主键也是表中的外键user_accounts.但我不确定是否允许.
另一个问题是:student_rec还存在一个表,它需要一个student_number(user_id在user_accounts表中)和一个guidance_counsellor_id(也在user_id其中user_accounts)的每个记录.如果学生和辅导员的ID都来自user_accounts table,我将如何设计student_rec表格?为了将来参考,我如何手动将其编写为SQL代码?
这一直困扰着我,我找不到任何具体或肯定的答案.
如果我不需要主键,我不应该添加一个数据库吗?
我需要创建一个数据库设计,其中bar或事件所有者(admin-table因为他们拥有配置文件)向用户发送警报.
我想创建一个"ALERT"表,但很难决定使用哪个主键.我想添加一个至少包含admin_ID(PFK),user_ID(PFK)的复合键,我想在主键上添加日期和时间戳,以指示管理员可以发送许多警报(通知),但只有1某个时间点.
但是,从这个线程:时间戳作为复合主键的一部分?,我了解到我不应该使用时间戳.
顺便说一句,还没有确定我们将在这一点上使用什么数据库软件.
我有时会倾向于快速移动到自动增量键.我从来没有注意到它的问题(在Access中),但是根据我的阅读,这可能并不总是最有意义的事情,因此我向专业人士提出这个问题.
我只有一次机会以正确的方式做到这一点,使后端基本正确.
你对此有何看法?