|
Hi,
Somekind of list of thoughts on this issue:
- security is a good point. Although security can be enforced on many different levels you can use owner permissions for example in packages. This helps to handle common security problems.
- logical design. If you separate the objects to different schemas based on the data they hold, it's easier to understand the database design (and usage) especially in bigger databases.
- backups and other DDL operations. Many of the operations can be done schema based. For example you can export a certain schema so this helps in administrative tasks
- usage in applications. This is two folded, you can either define the schema in applications (like SELECT ... FROM schema.table ) or you can use public synonyms to hide the structure. Public synonyms are bad in situations where you actually need for example a table with the same name twice in the database but otherwise they should simplify the use in the apps.
- isolation. Using different schemas you can isolate different portions of the database more easily (a bit same as the security) but again this can be done in multiple ways.
V. wrote: Another option would be to seperate tablespaces, but use the same schema
This is a totally different issue. Tablespace is used to define the actual storage place for an object regardless of the schema. A simple situation is that you have a table and an index on it. In optimal case they are stored on different disks so they would be stored on different tablespaces even though they both would be defined in the same schema. So tablespace is just a way to define physical storage place without defining the actual file (since tablespace can contain multiple files).
|
|
|
|
|
This is in fact what we did finally. Created schema per application and a common one holding configuration data and parameters etc. For that schema we made public synonyms.
After everything was moved I had to change very little to my prototypes to make them work
thanks for the advice.
V.
|
|
|
|
|
No problem
|
|
|
|
|
Suppose I have one table called Jobs:
CREATE TABLE [Jobs]
(
[JOBID] [int] IDENTITY(1,1) NOT NULL,
[PARTDESC] [nvarchar](64) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[OrderPlacedBy] [nvarchar](64) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[SpecialistName] [nvarchar](64) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[Priority] [int] NOT NULL,
[Symptoms] [ntext] COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[CustomerNotes] [ntext] COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[ShopNotes] [ntext] COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[JobType] [nvarchar](32) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[JobState] [nvarchar](32) COLLATE Latin1_General_CI_AS NULL,
[JobAddedDate] [datetime] NOT NULL,
[JobStartedDate] [datetime] NULL,
[JobFinishedDate] [datetime] NULL,
[JobShippedDate] [datetime] NULL,
[RecievedDate] [datetime] NULL
)
I want to see the specialist name and his jobs IDs horizontally.
ANA 201,502,605,701,774
BEN 102,103,051
JEN 705,401,402,509,409,408
A specialist may have n jobs. Suppose specialist ANA has 10 jobs where BEN has 5 jobs.
In this way I want to show specialist his jobs horizontally where the number of jobs may vary per specialist.
How can I do this in SQL?
tbhattacharjee
|
|
|
|
|
|
There are some excellent articles [^]here on CP (blatant self promotion here)
Never underestimate the power of human stupidity
RAH
|
|
|
|
|
Must say that you found an excellent article for this issue !
|
|
|
|
|
|
i am recently new to database designs..i have been working on samples but never designed a sql database...please help with a tutorial or recommend a book so that i can design a database and use linq in c# to access it...by designing a database .simply meaning creating plain tables and manipulating data in it..i have sql server management studio 2008 and have visual studio 2010 ultimate also...please guide towards a simple and easy way to get started..
|
|
|
|
|
You have asked one huge question. Try doing some research.
Heres some Google foo[^] for you
Then try a C# tutoral and a Linq tutorial. You have the word you just need to do the research.
Never underestimate the power of human stupidity
RAH
|
|
|
|
|
|
If you have the budget, hire a senior consultant that will explain you in-depth (teach you) the workings of SQL-Server. I had a two day Oracle session not long ago and it gave me some insight into do's/don'ts. It remains difficult to design it still, but it will give you more confidence in what you're about to get yourself into.
V.
|
|
|
|
|
|
I am not very good at Microsoft Access's queries, they seem different than standard SQL.
I have the following query:
SELECT COUNT(*) AS Total
FROM CDCopy
WHERE CatalogueNumber=[Please enter the catalogue number to find out how many copies are available];
If I double click the query it shows an input box and the rest works as intended.
The problem is that I don't know how to use it in a form!
I have tried :
MsgBox([GETCDCopyCount]![Total]![CatalogueNumber])
Where "[CatalogueNumber]" is a textbox as I want to pass the text information from that box into the query.
Keep getting error messages, can someone help me out?
Thanks!
|
|
|
|
|
Hi..
i am using sql server 2008..
if suddenly database crashes then how to recover it?
what about data?
|
|
|
|
|
Restore a backup
Reload the log file
Never underestimate the power of human stupidity
RAH
|
|
|
|
|
Thanks for reply..
i have an old backup consider for ex on 01-02-2011
after the backup i have added some entries into the table..
now my database is crashed if i restore the old backup only the
old data will be restored .. but how to retrive the new data
that i have entered after the old backup..
help me...
|
|
|
|
|
See if you can backup the transition log and apply that.
Let this be a lesson that you need to back up more often.
|
|
|
|
|
Good advice to the original OP. Depending on how his transaction logging is done, hopefully it is possible.
"Life should not be a journey to the grave with the intention of arriving safely in a pretty and well preserved body, but rather to skid in broadside in a cloud of smoke, thoroughly used up, totally worn out, and loudly proclaiming "Wow! What a Ride!"
— Hunter S. Thompson
|
|
|
|
|
There's an article in CP which could be benefitial for you. Even though the article has some issues there are mechanisms you could try if the problem is still relevant:
Point In Time Restore[^]
|
|
|
|
|
Hi there...i am recently going to start work on databases in which i will have to insert,delete,log,update,match entries.. the language in general i will use c#...my question is..what query lanquage is the easier and convinient way to do these? Ado.net or LINq....which one i should learn first ?? and which one is easy?...please guide!
|
|
|
|
|
I'd learn them in this order:
SQL: Can use on pretty much any modern DB system.
ADO.NET: Relies on SQL at the bottom so a working knowledge if that is important
LINQ: Although it as abstracted away, it uses ADO at the bottom and has many similarities to SQL, and sometimes/often you need to write raw SQL.
But I'd use them in the following order of preference:
LINQ + SQL --> ADO + SQL.
Personally I rarely feel the need for plain ADO any more (DataSets = ), but I do find it useful to know how they all work.
|
|
|
|
|
Linq will only work with Microsoft technologies -- pretty much just .net and SQL Server -- so it may stunt your growth.
SQL is a more general solution and once you know it you can use it with a number of database systems and access methods, e.g. ADO.net, ODBC, embedded.
As to ADO.net, I recommend encapsulating it into a framework that you can easily understand and use.
Of course, you'd be even better off mastering everything.
|
|
|
|
|
yeah i know it has limitations..infact i was asking in short term period working with sql server and c#...so only in that context would first learning Linq be ok?..at the moment just have to work on a simple database.
|
|
|
|
|
I wouldn't use it for a enterprise application, but that's just me.
|
|
|
|