Mysql数据库设计

问题描述 投票:0回答:4

目前我正在开发一个项目,乍一看,该项目需要数据库中的许多表。大多数表格都相当简单,但我确实有一个问题。其中一张表格将是网站的成员列表,其中将包括用户名、密码、联系信息、个人简介、教育程度等内容。这是一个简单的设计,但是,还需要每个成员将其可用性输入并存储在数据库中。可用性定义为日期和时间范围。例如,美国东部标准时间 2011 年 4 月 5 日下午 1 点至下午 6 点可用,或者美国东部标准时间每周五晚上 8 点后不可用。对于单个用户来说,这可能是一个单独的表,但对于许多用户来说,我不确定如何以可管理的方式组织数据。首先的想法是使用代码为每个用户创建一个表,但这可能意味着除了我用于其他站点功能的少数表之外,数据库中还有很多表。从逻辑上讲,我可以使用附加到 Avail_ 的用户名或表名称的其他内容,即:Avail_UserBob,然后根据需要进行查询。但我很好奇是否有人能想到一个比在单个数据库中拥有数百个表的潜力更好的选择。

编辑 因此,普遍的共识是为成员建立一个表,例如 ID 是唯一的键。然后有第二个表用于显示可用性(日期、开始时间、结束时间、是否可用的布尔值以及适用的成员 ID)。 Django 可能听起来不错并且工作得很好,但是我在处理这个项目时没有时间花时间学习另一个框架。 2 表方法似乎似乎合理,但我担心功能需要额外的编码,这些功能将利用可用时间来 A)构建类似日历的页面来添加、编辑或删除输入的值,以及 B)将可用性与另一个表中的条目进行匹配列出了游戏。虽然我可能需要编写更多代码,但只要数据库健全、功能齐全且不那么混乱,我就可以忍受。感谢大家的意见。

mysql database-design
4个回答
1
投票

不要听起来像个巨魔,但您应该考虑使用 Web 框架来为您构建大部分内容。我建议看看 Django。使用它,您可以定义想要存储的字段类型(以及它们如何关联),Django 会构建所有 SQL 语句来实现这一目的。您免费获得一个漂亮的管理界面,以便员工可以登录并添加/编辑等。

您也不必担心构建登录/身份验证/更改密码等表单。所有会话内容都由 Django 处理。您可以专注于您的项目/应用程序的独特之处。

它可以让你非常非常快地构建你的项目。

djangoproject.org

我没有任何其他框架建议可以满足您的需求。我愿意...但我认为 Django 符合要求。


0
投票

创建一个表来存储用户。将其主键用作其他表中的外键。


0
投票

数据库被编写为在表中保存许多行。没有针对表创建进行优化。因此,为每个用户创建一个新表并不是一个好主意。相反,为每个用户提供唯一的标识符,并将可用性放在单独的表中。提供附加标志以使条目有效或无效。


0
投票

创建用户表;然后创建每个用户的可用性表。不要尝试将可用性塞入用户表中:这将保证您以后会遭受巨大的痛苦;然后您会发现您可以创建一个可用性表。

Google 数据库规范化以了解原因。

将其视为遭受过如此自伤的悲伤的人的真理:-)

© www.soinside.com 2019 - 2024. All rights reserved.