开发者

Database: Splitting Tables

I've recently read alot about databases, redundancy, etc.

Now I'm building an users-table which will hold all informations about the users registered at my system.

The users-table should hold: id(PK), username, password, email, and the address(street, city, zipcode, country).

Should I split the address and create another table only holding the users-address, like: id(PK), street, city, zipcode, country, user_id(FK)) ? I even could split here the zipcode and country to new tables.

Does this make sense, especially the splitting of zipcode and country to a new table ?

开发者_C百科

Cheers!


Well I thought about some redundancy-aspects here. Wouldn't it be better to store e.g. the country in a single table instead of writing it over and over again in my users-table? -> redundancy


For most cases the answer is no. Why have an extra join to find the address? And why have two tables with one-to-one relationship?

As other folks said, don't complicate your life unless you are sure about some performance gains.


I personally don't see any added value on splitting these details into separated tables.

Even if you are not likely to use the address/zipcode very often, you can always select only the necessary fields using SELECT username,email.. instead of SELECT *..


You should do this based on a requirement, not because you can. So, either you should have a functional need (e.g., you want to store multiple addresses per user) or a technical issue that you want to solve (performance, security, etc.). To me, the latter sounds rather unlikely on such a straightforward table design, so with the information you are providing, I would suggest sticking with a single table.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜