principleModerate
Decision criteria on when to use a non-dbo schema vs a new Database
Viewed 0 times
newcriterianondatabasedbodecisionwhenuseschema
Problem
I'm mostly an application developer but find myself having to do all the up-front database work for my current project (btw... its MS SQL Server 2008). As a first decision, I'm trying to figure out whether to divide my state using seperate Databases or using seperate Schema's in the same database. I've done a little reading on SQL Server Schema's and it seems like a natural way to seperate object domains (which I like), but I'm not sure if there may be hidden costs to this pattern.
What are the more practical things I should consider when selecting between these two approachs? If I avoid the
As a side note... At some point this will be handed over to a real DBA to maintain/support so I'm trying to make sure I don't make their lives harder.
What are the more practical things I should consider when selecting between these two approachs? If I avoid the
dbo.mytable in favor of myschema.mytable will I be creating other challenges (or problems) for my architecture?As a side note... At some point this will be handed over to a real DBA to maintain/support so I'm trying to make sure I don't make their lives harder.
Solution
I'll start by saying don't consider schemas as namespaces or object domains in the OO sense. Schemas are essentially permission containers with some added value (see below)
Also, "separate schemas" or "separate databases" are 2 different concepts. Data that needs to be transactionally and referentially consistent needs to be in the same database. See One Database or Ten? blog article for more.
In that database, you may or may not use schemas for organising your objects.
Personally, I'm a fan of schemas and always use them but for things like permissions and logical grouping. For that, I'll refer you to previous questions where you can see the general opinion is in favour of them:
For the case for separate databases, see Aaron's answer, but this all hinge on the "transactionally and referentially consistent" requirement.
Also, "separate schemas" or "separate databases" are 2 different concepts. Data that needs to be transactionally and referentially consistent needs to be in the same database. See One Database or Ten? blog article for more.
In that database, you may or may not use schemas for organising your objects.
Personally, I'm a fan of schemas and always use them but for things like permissions and logical grouping. For that, I'll refer you to previous questions where you can see the general opinion is in favour of them:
- Schema design - best practices?
- What standard should I follow when naming tables and views?
- Over use/correct use of schemas?
For the case for separate databases, see Aaron's answer, but this all hinge on the "transactionally and referentially consistent" requirement.
Context
StackExchange Database Administrators Q#11101, answer score: 17
Revisions (0)
No revisions yet.