首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL数据类型?

MySQL数据类型?
EN

Stack Overflow用户
提问于 2010-09-01 21:33:52
回答 3查看 476关注 0票数 1

我正在用MySQL和PHP为基本的CMS设计一个数据库。CMS将有一个前端,这将允许排序和搜索。后端将允许授权用户上传文件。

我正在使用PHPMyAdmin,我希望帮助设置我的数据库。

我愿意回答各种MySQL数据类型以及它们的好处。请使用常见的数据库字段作为示例.

下面是我想要的东西的清单。缺少什么数据类型,需要使用什么数据类型?

Resources (用于我的文件)

  • file_id
  • filename (文件是预先预置的,并从这里导出显示名称和路径)
  • file_type (PDF音频-视频-视频-照片也用于生成文件urls)
  • 上传日期( PHP或MySQL)
  • uploaded_by (用户ID来自用户表)
  • 事件(event_id来自事件表,可选)

用户(用户帐户-用于管理访问,并可能用于通知列表)

  • user_id
  • first_name
  • last_name
  • email
  • password
  • phone_number (optional)
  • permissions_level (只读,upload)
  • creation_date

)

Events

  • event_id
  • event_name
  • event_location
  • event_date
  • event_description
  • entry_date
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-09-01 21:49:22

我想要的是:

参考资料(用于我的文件)

entries)

  • filename

  • file_id INT (或SMALLINT取决于预期的time)

  • uploaded_by VARCHAR (或文本如果长度超过255 chars)

  • file_type ENUM )(如果只添加您提到的或如果可以添加动态类型的话)

  • 上传日期时间(或如果您不需要time)

  • uploaded_by INT (或SMALLINT,但与用户表中相同)

  • 事件INT (或SMALLINT但与事件表中相同)

用户(用户帐户-用于管理访问,并可能用于通知列表)

entries)

  • first_name VARCHAR

  • last_name VARCHAR

  • email VARCHAR

  • password

  • user_id INT (或SMALLINT )取决于预期的

  • CHAR(40) (用于SHA1 hash)

  • phone_number VARCHAR (因为它可能包含类似-、/或+)

  • permissions_level TINYINT的内容)(如果仅包含数字值,最多包含127个values)

  • creation_DATE日期时间(或不需要时间的话)

)

Events

time)

  • event_description

  • event_id INT (或SMALLINT取决于预期的short)

  • entry_DATE日期时间数)(如果不需要short)

  • entry_DATE文本,则取决于日期)(因为short)

  • entry_DATE DATETIME (或不需要时间的日期)可能是short)

  • entry_DATE DATETIME )

当您设置数据库并输入一些虚拟数据时,可以通过phpmyadmin运行一个简单的语句,它将告诉您,MySQL将对该虚拟数据使用什么:

代码语言:javascript
复制
SELECT * FROM events PROCEDURE ANALYSE()

Optimal_fieldtype专栏中,您将找到MySQL告诉您的内容。但你不应该采用那种类型的。它将经常告诉您使用ENUM,但是大多数情况下,您需要添加随机数据,因此必须使用VARCHAR,在这种情况下,列Max_length将提示您应该使用多长时间。但是在所有的VARCHAR字段中,您应该添加附加空间,这取决于您期望值的长度。考虑到一个名字甚至可以超过50个字符。

票数 2
EN

Stack Overflow用户

发布于 2010-09-01 21:45:39

您的用户表没有密码哈希列。不确定你是否打算让它拥有这样的东西。我看不出我们如何回答应该使用什么数据类型,因为这完全取决于您计划如何使用这些列。对于日期,我更喜欢日期时间而不是时间戳,但这只是个人偏好,因为我喜欢手动在查询中插入日期。

票数 1
EN

Stack Overflow用户

发布于 2010-09-01 21:44:26

缺少的是什么,好吧,这有点让你决定/需要什么。你应该通读有关数据库设计的文章。

就您所拥有的数据类型而言

  • id字段应该是INT,或者BIGINT (取决于应用程序的大小),并设置为PRIMARY KEY
  • 名称应该是一个varchar,您想要多长时间取决于您的需求是什么。大多数第一个/列表名称通常最多为25-30个字符。事件名称可能超过250个,取决于您的requirements.
  • The位置将类似于一个VARCHAR的名称在50-150左右,取决于您的requirements.
  • The日期应该是一个DATETIME字段。
  • 描述应该是VARCHAR(250)TEXT字段。
  • 权限实际上取决于您想要如何处理它。这可能是一个INT或一个VARCHAR (如果您想序列化一个数组)。characters
  • EMail
  • 电话号码可以是INT (如果您想要删除所有非数字字符并按您自己的方式格式化),或者如果您不想删除
  • ,则为VARCHAR(15)

希望这会有所帮助,这同样取决于--您对应用程序的需求以及您所设想的内容。但是,随着需求的变化,初始类型总是可以更改的。

编辑

如果您想了解有关不同MySQL数据类型的完整信息,请阅读手册:http://dev.mysql.com/doc/refman/5.0/en/data-types.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3622319

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档