使用 MySQL set 类型是否正确?
你好 我正在建立一个用户数据库,其中每个用户都存储了一些关于他们的正常详细信息。 我还想存储用户知道哪些语言。
我知道执行此操作的一种方法是创建一个语言表,然后创建一个在语言和用户之间映射的单独表。使用 SQL“set”类型而不是为语言创建额外的表会更容易吗?
Hi
I am building a database of users where each user has some normal details stored about them.
I would also like to store which languages the user knows.
I know that one way to do this would be to create a language table and then create a separate table that maps between languages and users. Would it be easier to use the SQL "set" type instead of creating an extra table for languages?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
可能不会。使用
SET
存在很多问题(例如,只有 64 个元素;而且我很确定有超过 64 种语言)。Probably not. There are lots of problems with using
SET
(only 64 elements, for example; and I'm pretty sure there are more than 64 languages).作为一般规则,如果您可以枚举所有可能/支持的语言/值,
SET
将起作用。否则我会使用该表,因为返回并ALTER TABLE
添加新语言并不是一个很好的方法,并且还可能需要使用以下命令更改应用程序SET
,而如果您使用单独的表,它应该只需INSERT
一个新的语言行。而且,语言就是这样,我不想假设我事先了解每种语言。
As a general rule, if you can enumerate all the possible/supported languages/values,
SET
will work. Otherwise I'd use the table, because going back andALTER TABLE
ing to add a new language isn't a very good way to do things and will also probably require changes to the application(s) using theSET
, whereas if you use a separate table it should Just Work toINSERT
a new language row.And, language being what it is, I'd not want to assume I know every language beforehand.