I have a system that basically stores a database within a database (I'm
sure lots have you have done this before in some form or another).
At the end of the day, I'm storing the actual data generically in a
column of type nvarchar(4000), but I want to add support for unlimited
text. I want to do this in a smart fashion. Right now I am leaning
towards putting 2 nullable Value fields:
ValueLong ntext nullable
ValueShort nvarchar(4000) nullable
and dynamically storing the info in one or the other depending on the
size. ASP.NET does this exact very thing in it's Session State model;
look at the ASPStateTempSes sions table. This table has both a
SessionItemShor t of type varbinary (7000) and a SessionItemLong of type
Image.
My question is, is it better to user varbinary (7000) and Image? I'm
thinking maybe I should go down this path, simply because ASP.NET does,
but I don't really know why. Does anyone know what would be the benifit
of using varbinary and Image datatypes? If it's just to allow saving of
binary data, then I don't really need that right now (and I don't think
ASP.NET does either). Are there any other reasons?
thanks,
dave 7 3628
>I have a system that basically stores a database within a database (I'm sure lots have you have done this before in some form or another).
Please explain. What form is the data you are storing? If it isn't
represented relationally then why use SQL Server?
--
David Portas
SQL Server MVP
--
Dave (ch********@yah oo.com) writes: My question is, is it better to user varbinary (7000) and Image? I'm thinking maybe I should go down this path, simply because ASP.NET does, but I don't really know why. Does anyone know what would be the benifit of using varbinary and Image datatypes? If it's just to allow saving of binary data, then I don't really need that right now (and I don't think ASP.NET does either). Are there any other reasons?
Depends on the data you are storing. Since you talk about a "database with
a database", my initial reaction was you would use image, since I assumed
that the database is a binary file, complete with indexes, integer numbers,
and whatever.
But if the "database" is represented in text, for instance an XML document,
then there is no reason to use binary datatypes.
--
Erland Sommarskog, SQL Server MVP, es****@sommarsk og.se
Books Online for SQL Server SP3 at http://www.microsoft.com/sql/techinf...2000/books.asp
I'm sorry, I need to elaborate. When I say database within a database,
I don't meen storing the actual database in a binary column or storing
XML in a column, instead I mean defining the structure of data within a
set of tables.
Instead of a concrete table such as Member with 3 columns: MemberID
int, FirstName varchar(25), LastName varchar(25), it is defined as an
abstract table that's defined across a series of tables. One row of any
of my abstract table actually lives (potentially) in several rows of a
sort of "Value" table. This "Value" table contains one column
(Varchar(4000)) that actually stores the value of the data item.
In our system we have over 15 abstract objects (Member being one of
them), so I know people will begin to question the architecture, but
that is not my point here... We do this for many reasons
1) We must store history on all changes (we write medical software)
2) We must encrypt the data and this allows a generic way to do this
(just flip a bit)
3) Our application will soon allow it's users to create user-defined
table and this is set up perfectly for that since it would only require
DML to achieve this (not DDL)
4) Speed isn't that important, right now our product has 10 users max.
Even if it became an issue we could solve this easily...
thanks,
dave
Dave (ch********@yah oo.com) writes: I'm sorry, I need to elaborate. When I say database within a database, I don't meen storing the actual database in a binary column or storing XML in a column, instead I mean defining the structure of data within a set of tables.
Instead of a concrete table such as Member with 3 columns: MemberID int, FirstName varchar(25), LastName varchar(25), it is defined as an abstract table that's defined across a series of tables. One row of any of my abstract table actually lives (potentially) in several rows of a sort of "Value" table. This "Value" table contains one column (Varchar(4000)) that actually stores the value of the data item.
In our system we have over 15 abstract objects (Member being one of them), so I know people will begin to question the architecture, but that is not my point here... We do this for many reasons
1) We must store history on all changes (we write medical software) 2) We must encrypt the data and this allows a generic way to do this (just flip a bit) 3) Our application will soon allow it's users to create user-defined table and this is set up perfectly for that since it would only require DML to achieve this (not DDL) 4) Speed isn't that important, right now our product has 10 users max. Even if it became an issue we could solve this easily...
Thanks for the elaboration, but I am not sure that this really provided
any more actual useful information to answer the question. "The database
within in a database", is thuse some sort of object that cannot be described
in a single table - nothing strange with that Order + OrderDetails is a
classic example.
But if I remove the veil about databases within database, and just take
the core question of yours: what datatype should use to save text data,
the answer is (n)varchar or (n)text, depening on your need to support
Unicode and the size limits of the data.
--
Erland Sommarskog, SQL Server MVP, es****@sommarsk og.se
Books Online for SQL Server SP3 at http://www.microsoft.com/sql/techinf...2000/books.asp
Let me completely rephrase my approach...
If you've ever installed the sql data model for ASP.NET that resides in
sql server, you'll notice that Microsoft has a table called
ASPStateTempSes sions. There are two columns that hold the encrypted
session data of the user. These two columns are:
varbinary(7000)
Image
and they are each nullable. Depending on the size of the Session data,
one or the other column is used since Blob columns (such as Image,
Text, etc...) are inefficient. Using the Session in ASP.NET you'll
notice that it consists of strings only, so why did Microsoft decide to
use these types? Is there some effieciency thing? Or were they planning
on simply supporting possible binary data in the future.
-dave
Dave (ch********@yah oo.com) writes: If you've ever installed the sql data model for ASP.NET that resides in sql server, you'll notice that Microsoft has a table called ASPStateTempSes sions. There are two columns that hold the encrypted session data of the user. These two columns are:
varbinary(7000) Image
and they are each nullable. Depending on the size of the Session data, one or the other column is used since Blob columns (such as Image, Text, etc...) are inefficient. Using the Session in ASP.NET you'll notice that it consists of strings only, so why did Microsoft decide to use these types? Is there some effieciency thing? Or were they planning on simply supporting possible binary data in the future.
Sorry, I have zero knowledge about ASP .Net, so I cannot answer any
question about its design.
--
Erland Sommarskog, SQL Server MVP, es****@sommarsk og.se
Books Online for SQL Server SP3 at http://www.microsoft.com/sql/techinf...2000/books.asp
Been Working on the AspState database, some information indicates that
the transfer of the string data is being done as a binary stream for
efficiency, thus requiring a binary db datatype to store it.
*** Sent via Developersdex http://www.developersdex.com *** This thread has been closed and replies have been disabled. Please start a new discussion. Similar topics |
by: Millie Niss |
last post by:
I am new to PHP and mySQL, and I am trying to build a database of
services (on a service table) provided by agencies (another table),
where one agency can provide many services, but a service belongs to a
single agency. There are about 10 fields in the services table,
including a comments field which needs to be searchable. I don't know
how...
|
by: SuryaPrakash Patel via SQLMonster.com |
last post by:
Dear Reader
I am trying to design a database. How can I make best Judgement that Indexing (which I am trying to fix during Diagram Desingning process)is ok.
I am able to identify the best candidate for the indexing.
Below is the details I want to understand:
Area
ZIP
|
by: Darren |
last post by:
X-No-Archive
Hi all,
Can anyone help me with structuring the data in a small tool I have to
build? I'm trying to work out if there's a design pattern or data
structure that would remove some of the dependencies.
I am designing an animation tool.
|
by: Gary James |
last post by:
This may not be a direct C# question, but since I'll be using using C# for
development, I thought I'd pose the question here.
I'll soon be involved in the design of a new software product that will
employ a software "Plug-In" architecture. Taking the plug-in route will
give us a design that can adapt to, as yet, undefined future...
|
by: slonocode |
last post by:
I'm wondering if there are certain processes that I could follow to
learn to design better classes? Where could I find these processes?
Is designing classes more of an art that comes from experience or can it
at least be somewhat done by a process?
I have the most trouble with abstracting the specifics, such that a
class could be...
| |
by: MP |
last post by:
Greets,
context: vb6/ado/.mdb/jet 4.0 (no access)/sql
beginning learner, first database, planning stages
(I think the underlying question here is whether to normalize or not to
normalize this one data field - but i'm not sure)
:-)
Background info:
|
by: keri |
last post by:
Hi everyone,
Having learnt a little about the basics whilst creating my first db I
am now about to start creating a good one!
I am about to sit down with a large piece of paper and plan it all
properly but I have some questions about logistics I wondered if anyone
could help with.
1. Can I put command buttons on a table or query?
|
by: Eric Sadoyama |
last post by:
I have a database documentation question, but I am not even sure how
to phrase it properly so I don't know where to start looking for
answers.
We are developing a database that is based on several different data
standards and schema. I'm finding it confusing to keep it all
straight. What's this field for? Which standards document is it...
|
by: Les Desser |
last post by:
In article
<fcebdacd-2bd8-4d07-93a8-8b69d3452f3e@s50g2000hsb.googlegroups.com>, The
Frog <Mr.Frog.to.you@googlemail.comMon, 14 Apr 2008 00:45:10 writes
Not sure if I quite follow that.
1. Data encrypted by AES key
2. AES key encrypted with Asymmetric public key (?)
|
by: marktang |
last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However, people are often confused as to whether an ONU can Work As a Router. In this blog post, we’ll explore What is ONU, What Is Router, ONU & Router’s main...
|
by: Hystou |
last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can effortlessly switch the default language on Windows 10 without reinstalling. I'll walk you through it.
First, let's disable language...
| |
by: Oralloy |
last post by:
Hello folks,
I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>".
The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed.
This is as boiled down as I can make it. ...
|
by: jinu1996 |
last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that...
|
by: Hystou |
last post by:
Overview:
Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows Update option using the Control Panel or Settings app; it automatically checks for updates and installs any it finds, whether you like it or not. For...
|
by: agi2029 |
last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing, and deployment—without human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then...
|
by: 6302768590 |
last post by:
Hai team
i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system
|
by: muto222 |
last post by:
How can i add a mobile payment intergratation into php mysql website.
| |
by: bsmnconsultancy |
last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating...
| |