开发者

Is it possible to have "folders" in a database?

开发者 https://www.devze.com 2023-01-23 16:51 出处:网络
I am going to have a database with several (less than 10) \"main\" tables. Additionally to that I want to have hundreds or thousands tables of the same type (let same \"user_1\", \"user_2\", \"user_3\

I am going to have a database with several (less than 10) "main" tables. Additionally to that I want to have hundreds or thousands tables of the same type (let same "user_1", "user_2", "user_3" and so on). Is it possible to put all these tables in a directory/folder? Or database itself is already considered as a "folder" for tables?

ADDED

Since I go a lot of questions about why I want to do that, I want to elaborate on that. I want to have many tables to optimize query to the database. If I put everything in one table, the table is going to be huge. Than, if I want to extract information about a particular user, I first need to find those rows in the table which have a given user in a given column. And it can be time consuming. I decided to create a table for every user. So, if I need to know something about a user I just read the required information from a "small" table.

To be more specific, I can have 10 000 user and info开发者_如何学Gormation about a given user can contain 10 000 lines. I do not want to have one table with 100 000 000 lines.


The answer is—you shouldn't be doing this in the first place.

Don't have separate tables for each user—instead, use one table for all your user data, and add a column (e.g. userId) to store information on who it's about.


If you want separate tables based on the user, this tends to be done using an owner or schema concept. In other words, you use:

create table pax.table1 ...

and pax is them the owner of that table. Each user can then have their own data.

If you don't mind everyone seeing the data in each others "folders", you can opt for a single table with a column specifying the particular user but you tend to lose user-based protection in that case.

Having each user's data in their own schema (or owner) means that you can restrict access based on user name. Keep in mind that these are then separate tables so it becomes harder to consolidate data from them should you wish to do so.

It's pretty unusual to have hundreds of thousands of tables, even in the biggest database setups. You might want to consider the possibility that you're doing something unwise. Posting the "why" of this question instead of the "how" will help us in assisting you further.

0

精彩评论

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

关注公众号