اذهب إلى المحتوى

السؤال

نشر

السلام عليكم

اريد انشاء جدولين في قاعدة بيانات MYSQL

جدول رئيسي master

وجدول فرعي له details

وبينها علاقة many to one relationship

الجدول الرئيسي  انشأته بـ sql server  وهذا الكود الخاص به :

USE [db1]
GO

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[table_main](
	[file_type] [int] NOT NULL,
	[file_no] [int] NOT NULL,
	[file_date] [date] NULL,
	[descr] [nvarchar](50) NULL,
 CONSTRAINT [PK_table_main] PRIMARY KEY CLUSTERED 
(
	[file_type] ASC,
	[file_no] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO

 

الجدول الفرعي انشأته بـ sql server  وهذا الكود الخاص به :

USE [db1]
GO

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[table_sub](
	[file_type] [int] NOT NULL,
	[file_no] [int] NOT NULL,
	[file_srno] [int] IDENTITY(1,1) NOT NULL,
	[descr] [nvarchar](100) NULL,

 CONSTRAINT [PK_table_sub] PRIMARY KEY CLUSTERED 
(
	[file_type] ASC,
	[file_no] ASC,
	[file_srno] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO

ALTER TABLE [dbo].[table_sub]  WITH CHECK ADD  CONSTRAINT [FK_table_sub_table_main] FOREIGN KEY([file_type], [file_no])
REFERENCES [dbo].[table_main] ([file_type], [file_no])
ON UPDATE CASCADE
ON DELETE CASCADE
GO

ALTER TABLE [dbo].[table_sub] CHECK CONSTRAINT [FK_table_sub_table_main]
GO

 

فكيف انشاء اكود مثلهما تعمل في mysql

Recommended Posts

  • 0
نشر

لإنشاء جدولين في قاعدة البيانات MySQL، اتبع الآتي:

لإنشاء الجدول الرئيسي "master"، يمكن استخدام الأمر التالي:

CREATE TABLE table_main (
  file_type INT NOT NULL,
  file_no INT NOT NULL,
  file_date DATE,
  descr NVARCHAR(50),
  PRIMARY KEY (file_type, file_no)
);

لإنشاء الجدول الفرعي "details"، استخدم الأمر التالي:

CREATE TABLE table_sub (
  file_type INT NOT NULL,
  file_no INT NOT NULL,
  file_srno INT NOT NULL AUTO_INCREMENT,
  descr NVARCHAR(100),
  PRIMARY KEY (file_type, file_no, file_srno),
  FOREIGN KEY (file_type, file_no) REFERENCES table_main(file_type, file_no)
    ON UPDATE CASCADE
    ON DELETE CASCADE
);

ملاحظة: تم استخدام نوع البيانات INT للأعمدة file_type، file_no، و file_srno،  استخدام نوع البيانات DATE للعمود file_date في الجدول الرئيسي، و استخدام NVARCHAR للأعمدة descr في الجدولين.

كما تم استخدام AUTO_INCREMENT في الجدول الفرعي لتوليد قيم فريدة للعمود file_srno.

  • 0
نشر

ربما هناك خطأ في عمود file_srno في الجدول الفرعي "details" الذي تم إنشاؤه في MySQL،  حاول تجربة تعريف عمود السيريال "file_srno" على أنه مفتاح أساسي (primary key)، والذي يتم توليد قيمه تلقائياً بواسطة خاصية AUTO_INCREMENT.

CREATE TABLE table_sub (
file_type INT NOT NULL,
file_no INT NOT NULL,
file_srno INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
descr NVARCHAR(100),
FOREIGN KEY (file_type, file_no) REFERENCES table_main(file_type, file_no)
ON UPDATE CASCADE
ON DELETE CASCADE
);

تم إضافة PRIMARY KEY في عمود file_srno لجعله المفتاح الأساسي، والاحتفاظ بخاصية AUTO_INCREMENT.

  • 0
نشر (معدل)

شكرا لك ، هل يمكنا ان تجعل في الجدول الفرعي

file_type+file_no+file_srno مفتاح uniq  اذا اجتمعت القيم كلها

مثلا اريده ان سيمح لي ان اضيف القيم التالية :

file_type,file_no,file_srno

1,1,1

1,1,2

1,1,3

2,1,1

2,1,2

3,1,1

3,1,2

 

 

تم التعديل في بواسطة Naser ناصر

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...