n********6 发帖数: 1511 | 1 背景:
记录一个家庭说的多种语言。
Table:
HouseholdID
Language
Webpage:
chkbox1. English
chkbox2. Russian
...
chkbox20. Arabic
chkbox21. Other Specify __________
问题:
1。有没有直接在网页点击submit这一个transaction里面,作多次insert,写入table?
2。有没有每个语言一个column的做法?何种条件下需要这样做? |
i****a 发帖数: 36252 | 2 normal "normalized" table design is to have a LKLanguage table, with
LanguageID, Language
your user table would have
UserID, user info
your data table would have
ID, UserID, LanguageID
if you want to do it de-normalized for DW purpose, then each language
would have a column.
【在 n********6 的大作中提到】 : 背景: : 记录一个家庭说的多种语言。 : Table: : HouseholdID : Language : Webpage: : chkbox1. English : chkbox2. Russian : ... : chkbox20. Arabic
|
n********6 发帖数: 1511 | 3 谢谢答复。
老大,我知道normal "normalized" table。
这就要求插入多条record,每个record一种语言。
在一个transaction中插入n个record,每个代表一种语言,似乎挺麻烦。
有没有简单的办法?
【在 i****a 的大作中提到】 : normal "normalized" table design is to have a LKLanguage table, with : LanguageID, Language : your user table would have : UserID, user info : your data table would have : ID, UserID, LanguageID : if you want to do it de-normalized for DW purpose, then each language : would have a column.
|
i****a 发帖数: 36252 | 4 if you really want, you can come up with some smart work around like
masking
0001 english
0010 chinese
0100 spanish
1000 russian
so if somebody has 0011, he speaks english and chinese.
something like the unix/linux chmod
but what you save on database transaction needs to be spent on
"decoding" this record
【在 n********6 的大作中提到】 : 谢谢答复。 : 老大,我知道normal "normalized" table。 : 这就要求插入多条record,每个record一种语言。 : 在一个transaction中插入n个record,每个代表一种语言,似乎挺麻烦。 : 有没有简单的办法?
|
B*****g 发帖数: 34098 | 5 有什么麻烦的?除非你的language是limited,也就是说不能生成新的语言。否则你每次
有个新语言就要加一个column。
或者你可以用自定义类型的column,不过现在的不太流行
【在 n********6 的大作中提到】 : 谢谢答复。 : 老大,我知道normal "normalized" table。 : 这就要求插入多条record,每个record一种语言。 : 在一个transaction中插入n个record,每个代表一种语言,似乎挺麻烦。 : 有没有简单的办法?
|
a9 发帖数: 21638 | 6 比起多次插入,增加列显然要麻烦的多。
每次
【在 B*****g 的大作中提到】 : 有什么麻烦的?除非你的language是limited,也就是说不能生成新的语言。否则你每次 : 有个新语言就要加一个column。 : 或者你可以用自定义类型的column,不过现在的不太流行
|
B*****g 发帖数: 34098 | 7 回到问题,其实没有什么是绝对的。根据不同的要求,数据库的设计可能是不同的。
比如说我们只关心20中常用语言,其它就是个参考,或者使用其它语言的非常少,下
面设计也可以考虑。
Tab1
ID, L1,......, L20, LOTHERS
L1到Lothers都只存1或0。
Tab2
ID Language
只存other language。
或者干脆把LOTHERS改成复杂类的coulmn,比如XML,把所有other的信息都存下,一个
table就够了。
每次
【在 B*****g 的大作中提到】 : 有什么麻烦的?除非你的language是limited,也就是说不能生成新的语言。否则你每次 : 有个新语言就要加一个column。 : 或者你可以用自定义类型的column,不过现在的不太流行
|