BebeSaiyan Ответов: 1

Как создать лучший дизайн базы данных в MSSQL?


Привет! Теперь я узнаю все о базах данных. Я просто хочу спросить, Можно ли создать таблицу базы данных, где всего 17 полей. И вместо этого, должен ли я создать для него отдельную таблицу? или лучше так, как есть? Пожалуйста, посоветуйте лучший дизайн для этого или если я должен попробовать реализовать реляционную базу данных к нему. Я включил sql-код ниже.

Что я уже пробовал:

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[guitarItems](
	[id] [int] IDENTITY(1,1) NOT NULL,
	[type] [varchar](50) NOT NULL,
	[brand] [varchar](50) NOT NULL,
	[model] [varchar](50) NOT NULL,
	[price] [float] NOT NULL,
	[image logo] [varchar](255) NULL,
	[item image1] [varchar](255) NULL,
	[item image2] [varchar](255) NULL,
	[description] [text] NOT NULL,
	[neck type] [varchar](100) NOT NULL,
	[body] [varchar](100) NOT NULL,
	[fretboard] [varchar](100) NOT NULL,
	[fret] [varchar](50) NOT NULL,
	[bridge] [varchar](100) NOT NULL,
	[neck pickup] [varchar](100) NOT NULL,
	[bridge pickup] [varchar](100) NOT NULL,
	[hardware color] [varchar](50) NOT NULL,
PRIMARY KEY CLUSTERED 
(
	[id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
SET IDENTITY_INSERT [dbo].[guitarItems] ON
INSERT [dbo].[guitarItems] ([id], [type], [brand], [model], [price], [image logo], [item image1], [item image2], [description], [neck type], [body], [fretboard], [fret], [bridge], [neck pickup], [bridge pickup], [hardware color]) VALUES (1, N'Guitar', N'ESP', N'Alexi 600', 17000.00, N'../Images/guitarLogo.jpg, N'../Images/Guitar Brands/ESP Guitars/espAlexi600.jpg', N'../Images/Guitar Brands/ESP Guitars/espAlexi600StandingPosition.jpg',
			N' Hardcore instrument that is only fitting for the darkest of music.', N'Maple Neck', N'Mahogany Body',
			N'Maple Fretboard', N'24 Frets', N'Regular Control',N'Single Coil', N'Single Coil', N'White')
INSERT [dbo].[guitarItems] ([id], [type], [brand],[model], [price], [image logo], [item image1], [item image2], [description], [neck type], [body], [fretboard], [fret], [bridge], [neck pickup], [bridge pickup], [hardware color]) VALUES (2, N'Guitar, N'ESP', N'EC 50', 14000.00, N'../Images/guitarLogo2.jpg, N'../Images/Guitar Brands/ESP Guitars/espEC50.jpg', N'../Images/Guitar Brands/ESP Guitars/espEC50StandingPosition.jpg',
			N' Hardcore instrument that is only fitting for the darkest of music.', N'Maple Neck', N'Mahogany Body',
			N'Maple Fretboard', N'24 Frets', N'Regular Control',N'Single Coil', N'Single Coil', N'Grey and Black')


SET IDENTITY_INSERT [dbo].[guitarItems] OFF

PIEBALDconsult

Пожалуйста, не ставьте пробелы в именах.
Старайтесь не использовать ключевые слова в качестве имен.
Не используйте множественное число имен.
Личности-это грязь.
Зачем указывать строковые значения с помощью N, если столбцы не являются N?

1 Ответов

Рейтинг:
9

CHill60

Сказал бебесайян:
Я просто хочу спросить, Можно ли создать таблицу базы данных, где всего 17 полей.
Да.
Сказал бебесайян:
И вместо этого, должен ли я создать для него отдельную таблицу? или лучше так, как есть?
Так будет лучше. Отдельная таблица для "этого" (что бы это ни было) вряд ли будет хорошей идеей.
Сказал бебесайян:
если я попробую внедрить в него реляционную базу данных
Я не уверен, что вы знаете, что подразумевается под реляционной базой данных. Я думаю, что на самом деле вы имеете в виду "должен ли я применить нормализацию к базе данных". Ответ на этот вопрос неизменно "да". Видеть Основы нормализации базы данных[^]
Смотрите также комментарии от @PIEBALDconsult
Сказал пиебалдконсалт:
Пожалуйста, не ставьте пробелы в именах.
Старайтесь не использовать ключевые слова в качестве имен.
Не используйте множественное число имен.
Личности-это грязь.
Зачем указывать строковые значения с помощью N, если столбцы не являются N?

Я вычеркнул комментарий к столбцам идентичности, поскольку это было изложение мнения, а мнения об использовании столбцов идентичности варьируются от разработчика к разработчику. Однако я предлагаю вам прочитать эту статью - Аарон Бертран : вредные привычки, чтобы пнуть: положить столбец идентичности на каждый стол[^]


BebeSaiyan

Спасибо за это. Очень ценю это.

0x01AA

Я могу себе представить, что PIEBALDconsult означает, что было бы лучше/гибче использовать последовательности вместо идентичности.

CHill60

Хороший момент, если ОП имеет SQL Server 2012 или более позднюю версию.
Для тех, кто еще столкнется с этим, вот статья на эту тему SQL Server: последовательности (автономер)[^]

0x01AA

Второе очень хорошее звено ... но у меня нет ни малейшего шанса снова поднять голос

CHill60

Все в порядке :-)
Мне говорят, что я иногда слишком дидактичен, но я просто не могу перестать округлять вещи: смеяться:

0x01AA

"Я слишком назидателен"... :-)
Пожалуйста, дайте мне знать Ваше мнение относительно "не плюрализируйте имена".
Я всегда борюсь с этим сам с собой, но для меня имена таблиц во множественном числе на 98% более интуитивно понятны. Но, может быть, это еще и потому, что я не родной английский.
Заранее спасибо.

[Редактировать]
Для меня таблица "заказы" звучит неплохо.
Но я всегда борюсь, если мы приходим к отношениям 1:N (N:M)...
Должен ли я теперь назвать детальную таблицу " ORDERS_ITEMS "или"ODRER_ITEMS"? В этом случае "ODRER_ITEMS" звучит для меня лучше :головная боль: ни за что? :смеяться:

CHill60

Честно говоря, у меня нет сильного мнения по этому поводу - образцы баз данных Microsoft также не согласуются с Конвенцией - у Northwind есть таблица [Order Details] (не только множественное число, но и пробел!), но у AdventureWorks есть [SalesOrderDetail] - singlular (и никаких пробелов - я согласен с этим!). Здесь есть действительно интересный набор аргументов как за, так и против ...дилемма именования sql-таблиц: сингулярность против Множественное Число Имен - Переполнение Стека[^].
Я действительно склонен использовать единственную форму для своих собственных таблиц - вероятно, больше из-за лени :-)

0x01AA

Спасибо тебе за это.
Это меня успокаивает, что даже профессионалы не могут просто так оправдать это (Гугл перевел :( )
Бруно

BebeSaiyan

потрясающая дополнительная информация!