相关疑难解决方法(0)

可以为两个可能的表之一做一个MySQL外键吗?

那么这是我的问题我有三张桌子; 地区,国家,国家.国家可以在区域内,州可以在区域内.地区是食物链的顶端.

现在我添加一个包含两列的popular_areas表; region_id和popular_place_id.是否有可能使popular_place_id成为国家州的外键.我可能不得不添加一个popular_place_type列来确定id是否描述了一个国家或州.

mysql polymorphic-associations

169
推荐指数
4
解决办法
6万
查看次数

改进在线考试的数据库设计

我正在开发一个多选在线测试项目,我已经设计了数据库来存储结果,但寻找更优化的方法.

要求:

  1. 每个问题都有四个选项.
  2. 只能选择一个选项,并且需要将其存储在数据库中.

我的设计:

表:

学生
stud_id,姓名,电子邮件

测试
test_id,testname,duration

问题
que_id,问题,opt1,opt2,opt3,opt4,answer,test_id

回答
stud_id,que_id,回答

通过这种方式可以存储答案但是它增加了记录的数量,因为学生新记录解决的每个问题都将被添加到答案表中.

例如,一个测试包含100个问题,1000个学生参加该测试,每个学生每个问题将有100个记录,1000个学生将有100个记录.

有没有更好的方法来做到这一点,记录数量会减少.

mysql database database-design

10
推荐指数
2
解决办法
7762
查看次数

从表创建嵌套数组的最佳方法:多个查询/循环VS单个查询/循环样式

假设我有2个表,我可以"合并"并表示在一个嵌套数组中.

考虑到:我正在徘徊这是最好的方法.

  • 效率
  • 最佳实践
  • 数据库/服务器端使用权衡
  • 你应该在现实生活中做些什么
  • 3个,4个或更多表的相同情况,可以这样"合并"

问题是关于任何服务器端/关系数据库.

我想到的两种简单方法(如果你有其他人,请建议!注意我要求一个简单的SERVER-SIDE和RELATIONAL-DB,所以请不要浪费你的时间来解释为什么我不应该使用这种DB,使用MVC设计等等......):

  1. 2个循环,5个简单的"SELECT"查询
  2. 1个循环,1个"JOIN"查询

我试图给出一个简单而详细的例子,以便解释自己并更好地理解你的答案(虽然如何编写代码和/或发现可能的错误不是问题,所以尽量不要关注那个...... .)

用于创建数据并将数据插入表格的SQL脚本

CREATE TABLE persons
(
    id int NOT NULL AUTO_INCREMENT,
    fullName varchar(255),
    PRIMARY KEY (id)
);

INSERT INTO persons (fullName) VALUES ('Alice'), ('Bob'), ('Carl'), ('Dan');

CREATE TABLE phoneNumbers
(
    id int NOT NULL AUTO_INCREMENT,
    personId int,
    phoneNumber varchar(255),
    PRIMARY KEY (id)
);

INSERT INTO phoneNumbers (personId, phoneNumber) VALUES ( 1, '123-456'), ( 1, '234-567'), (1, '345-678'), (2, '456-789'), (2, '567-890'), (3, '678-901'), (4, '789-012');  
Run Code Online (Sandbox Code Playgroud)

在我"合并"之后表格的JSON表示: …

php mysql sql server-side relational-database

6
推荐指数
1
解决办法
4307
查看次数

开发数据库模型的不确定性

我正在尝试为候选人开发数据库模型,他们的注册考试和考试成绩.这就是我到目前为止所做的.但我不确定是否在正确的轨道上,特别是从检查表到检查结果表.为特定候选人编写一个插入sql代码以供检查人群使用是多么容易

考试类型分为科学,艺术和社会科学.它们每个都有4个组件

在此输入图像描述

database database-design uml relational-database database-schema

3
推荐指数
1
解决办法
1007
查看次数

如何在关系中设置主键?

我想知道如何正确地设置主键关系.例如,我们有ER图表,其中包含元素:

  • 关键属性
  • 弱键属性
  • 识别关系
  • 关联实体

为了将其转换为关系模型,我们应该做一些技巧.上述处理关系的主键,但所有的元素都在自然键 -所以我们可以把它们原样或更换代理键.
考虑一些情况.

情况1

密钥属性是一个名称 - 因此它必须是类型CHARVARCHAR.通常,名称成为关键属性.

案例2

两个(或更多)识别关系成为关系复合主键(由外键组成).

案例3

识别具有弱密钥属性的关系也成为复合主密钥.

案例4

关联实体通常具有两个或多个识别关系,因此它们是连接关系(连接表).

  • 如何为关系设置主键以处理所有上述情况(可能还有一些我没有提及的情况)?

  • 如何避免使用代理键以及在哪些情况下他们是必要的?

  • 如何设置主键的数据类型?

  • 如果必须将复合主键传递给子关系,是否应该用代理替换?

在我的视图中使用代理键的优点和缺点:

好处

  • 它们是紧凑的(通常是类型的INT),有时可以替代复合键

  • 当他们在外国钥匙时,他们是说明性的

  • 他们被无痛地编入索引

缺点

  • 他们是数字而且毫无意义.例如,我希望在我的界面应用程序中填写连接表 - 所以我将别无选择,只能将数字联系起来 …

database database-design entity-relationship relational-database database-schema

3
推荐指数
1
解决办法
1664
查看次数