<!DOCTYPE html>
    <html lang="vi" xmlns="http://www.w3.org/1999/xhtml" prefix="og: http://ogp.me/ns#">
    <head>
<title>Những ràng buộc SQL đảm bảo cấu trúc dữ liệu tốt</title>
<meta name="description" content="Những ràng buộc SQL đảm bảo cấu trúc dữ liệu tốt - Savefile - Tin Tức -...">
<meta name="author" content=".: Nguoicodonvn2008.info - Cõi lòng người cô đơn :.">
<meta name="copyright" content=".: Nguoicodonvn2008.info - Cõi lòng người cô đơn :. [admin@nguoicodonvn2008.info]">
<meta name="robots" content="index, archive, follow, noodp">
<meta name="googlebot" content="index,archive,follow,noodp">
<meta name="msnbot" content="all,index,follow">
<meta name="generator" content="NukeViet v4.5">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta property="og:title" content="Những ràng buộc SQL đảm bảo cấu trúc dữ liệu tốt">
<meta property="og:type" content="website">
<meta property="og:description" content="Savefile - Tin Tức - https&#x3A;&#x002F;&#x002F;www.nguoicodonvn2008.info&#x002F;vi&#x002F;news&#x002F;savefile&#x002F;kien-thuc-may-tinh&#x002F;nhung-rang-buoc-sql-dam-bao-cau-truc-du-lieu-tot-7453.html">
<meta property="og:site_name" content=".&#x3A; Nguoicodonvn2008.info - Cõi lòng người cô đơn &#x3A;.">
<meta property="og:url" content="https://www.nguoicodonvn2008.info/vi/news/savefile/kien-thuc-may-tinh/nhung-rang-buoc-sql-dam-bao-cau-truc-du-lieu-tot-7453.html">
<link rel="shortcut icon" href="https://www.nguoicodonvn2008.info/favicon.ico">
<link rel="canonical" href="https://www.nguoicodonvn2008.info/vi/news/savefile/kien-thuc-may-tinh/nhung-rang-buoc-sql-dam-bao-cau-truc-du-lieu-tot-7453.html">
<link rel="alternate" href="https://www.nguoicodonvn2008.info/vi/news/rss/" title="Tin Tức" type="application/rss+xml">
<link rel="alternate" href="https://www.nguoicodonvn2008.info/vi/news/rss/karaoke-dual/" title="Tin Tức - Karaoke Dual" type="application/rss+xml">
<link rel="alternate" href="https://www.nguoicodonvn2008.info/vi/news/rss/nhac-tre/" title="Tin Tức - Nhạc trẻ" type="application/rss+xml">
<link rel="alternate" href="https://www.nguoicodonvn2008.info/vi/news/rss/tru-tinh/" title="Tin Tức - Trữ tình" type="application/rss+xml">
<link rel="alternate" href="https://www.nguoicodonvn2008.info/vi/news/rss/nuoc-ngoai/" title="Tin Tức - Nước ngoài" type="application/rss+xml">
<link rel="alternate" href="https://www.nguoicodonvn2008.info/vi/news/rss/remix/" title="Tin Tức - Remix" type="application/rss+xml">
<link rel="alternate" href="https://www.nguoicodonvn2008.info/vi/news/rss/tam-su-tinh-yeu/" title="Tin Tức - Tâm sự tình yêu" type="application/rss+xml">
<link rel="alternate" href="https://www.nguoicodonvn2008.info/vi/news/rss/tho-suu-tam/" title="Tin Tức - Thơ sưu tầm" type="application/rss+xml">
<link rel="alternate" href="https://www.nguoicodonvn2008.info/vi/news/rss/cuoc-song/" title="Tin Tức - Cuộc sống" type="application/rss+xml">
<link rel="alternate" href="https://www.nguoicodonvn2008.info/vi/news/rss/phan-mem/" title="Tin Tức - Phần mềm" type="application/rss+xml">
<link rel="alternate" href="https://www.nguoicodonvn2008.info/vi/news/rss/kien-thuc-may-tinh/" title="Tin Tức - Kiến thức máy tính" type="application/rss+xml">
<link rel="alternate" href="https://www.nguoicodonvn2008.info/vi/news/rss/hoc-tap/" title="Tin Tức - Học tập" type="application/rss+xml">
<link rel="alternate" href="https://www.nguoicodonvn2008.info/vi/news/rss/tai-lieu/" title="Tin Tức - Tài liệu" type="application/rss+xml">
<link rel="alternate" href="https://www.nguoicodonvn2008.info/vi/news/rss/de-thi/" title="Tin Tức - Đề thi" type="application/rss+xml">
<link rel="preload" as="style" href="https://www.nguoicodonvn2008.info/assets/css/font-awesome.min.css" type="text/css">
<link rel="preload" as="style" href="https://www.nguoicodonvn2008.info/themes/default/css/bootstrap.non-responsive.css" type="text/css">
<link rel="preload" as="style" href="https://www.nguoicodonvn2008.info/themes/default/css/style.css" type="text/css">
<link rel="preload" as="style" href="https://www.nguoicodonvn2008.info/themes/default/css/style.non-responsive.css" type="text/css">
<link rel="preload" as="style" href="https://www.nguoicodonvn2008.info/themes/default/css/news.css" type="text/css">
<link rel="preload" as="style" href="https://www.nguoicodonvn2008.info/themes/default/css/custom.css" type="text/css">
<link rel="preload" as="script" href="https://www.nguoicodonvn2008.info/assets/js/jquery/jquery.min.js" type="text/javascript">
<link rel="preload" as="script" href="https://www.nguoicodonvn2008.info/assets/js/language/vi.js" type="text/javascript">
<link rel="preload" as="script" href="https://www.nguoicodonvn2008.info/assets/js/DOMPurify/purify3.js" type="text/javascript">
<link rel="preload" as="script" href="https://www.nguoicodonvn2008.info/assets/js/global.js" type="text/javascript">
<link rel="preload" as="script" href="https://www.nguoicodonvn2008.info/assets/js/site.js" type="text/javascript">
<link rel="preload" as="script" href="https://www.nguoicodonvn2008.info/themes/default/js/news.js" type="text/javascript">
<link rel="preload" as="script" href="https://www.nguoicodonvn2008.info/themes/default/js/main.js" type="text/javascript">
<link rel="preload" as="script" href="https://www.nguoicodonvn2008.info/themes/default/js/custom.js" type="text/javascript">
<link rel="preload" as="script" href="https://www.nguoicodonvn2008.info/themes/default/js/bootstrap.min.js" type="text/javascript">
<link rel="stylesheet" href="https://www.nguoicodonvn2008.info/assets/css/font-awesome.min.css">
<link rel="stylesheet" href="https://www.nguoicodonvn2008.info/themes/default/css/bootstrap.non-responsive.css">
<link rel="stylesheet" href="https://www.nguoicodonvn2008.info/themes/default/css/style.css">
<link rel="stylesheet" href="https://www.nguoicodonvn2008.info/themes/default/css/style.non-responsive.css">
<link rel="StyleSheet" href="https://www.nguoicodonvn2008.info/themes/default/css/news.css">
<link rel="stylesheet" href="https://www.nguoicodonvn2008.info/themes/default/css/custom.css">
<style type="text/css">
	body{background: #fff;}
</style>
    </head>
    <body>
<div id="print">
	<div id="hd_print">
		<h2 class="pull-left">.&#x3A; Nguoicodonvn2008.info - Cõi lòng người cô đơn &#x3A;.</h2>
		<p class="pull-right"><a title=".&#x3A; Nguoicodonvn2008.info - Cõi lòng người cô đơn &#x3A;." href="https://www.nguoicodonvn2008.info/">https://www.nguoicodonvn2008.info</a></p>
	</div>
	<div class="clear"></div>
	<hr />
	<div id="content">
		<h1>Những ràng buộc SQL đảm bảo cấu trúc dữ liệu tốt</h1>
		<ul class="list-inline">
			<li>Thứ tư - 23/08/2023 09:37</li>
			<li class="hidden-print txtrequired"><em class="fa fa-print">&nbsp;</em><a title="In ra" href="javascript:;" onclick="window.print()">In ra</a></li>
			<li class="hidden-print txtrequired"><em class="fa fa-power-off">&nbsp;</em><a title="Đóng cửa sổ này" href="javascript:;" onclick="window.close()">Đóng cửa sổ này</a></li>
		</ul>
		<div class="clear"></div>
		<div id="hometext">
		</div>
				<div class="imghome">
			<img alt="Những ràng buộc SQL đảm bảo cấu trúc dữ liệu tốt" src="https://st.quantrimang.com/photos/image/2023/07/12/SQL-game-2-size-80x80-znd.jpg" width="460" class="img-thumbnail" />
		</div>
		<div class="clear"></div>
		<div id="bodytext" class="clearfix">
			<p style="text-align: justify;">Dữ liệu của bạn chỉ tốt nếu bạn có thể tin tưởng nó. Sử dụng các ràng buộc database để đảm bảo nó chính xác, đáng tin cậy và không phá vỡ mô hình dữ liệu của bạn.</p>

<p style="text-align: justify;"><img alt="Lập trình với SQL" data-i="0" data-src="https://st.quantrimang.com/photos/image/2023/08/23/sql-rang-buoc-7.jpg" data-was-processed="true" height="340" src="https://st.quantrimang.com/photos/image/2023/08/23/sql-rang-buoc-7.jpg" width="650" /></p>

<p style="text-align: justify;">Database là cần thiết cho nhiều ứng dụng, nhưng nó có thể trở nên lộn xộn nếu bạn không có hướng dẫn lưu trữ và xử lý dữ liệu.</p>

<p style="text-align: justify;"><strong>Các ràng buộc (constraint) SQL</strong>&nbsp;chỉ định quy tắc để lưu trữ dữ liệu trong bảng. Khi bạn đặt ràng buộc, database sẽ phát sinh lỗi nếu bạn cố gắng lưu trữ dữ liệu vi phạm những quy tắc đó. Ràng buộc giúp duy trì tính toàn vẹn dữ liệu và đảm bảo tính đồng nhất trong database của bạn.</p>

<p style="text-align: justify;">Dưới đây là một số kiểu&nbsp;<strong>ràng buộc SQL</strong>&nbsp;hữu ích nhất cho bạn trong việc xây dựng cấu trúc dữ liệu tốt.</p>

<h2 style="text-align: justify;">Ràng buộc NOT NULL</h2>

<p style="text-align: justify;">Mặc định, cột database chấp nhận dữ liệu chứa giá trị NULL. Về cơ bản, nó có nghĩa là không có giá trị tồn tại. Ràng buộc NOT NULL buộc một cột từ chối các giá trị NULL.</p>

<p style="text-align: justify;">Ràng buộc này đảm bảo mỗi cột phải chứa một giá trị. Bạn không thể thêm bản ghi database mà không cung cấp dữ liệu cho bất kỳ cột chứa ràng buộc NOT NULL.</p>

<p style="text-align: justify;">Lấy ví dụ bảng&nbsp;<strong>Customers</strong>. Ở đây có một số chi tiết cần thiết về từng khách hàng bạn muốn ghi lại, chẳng hạn như tên của họ. Thêm ràng buộc NOT NULL vào trường bắt buộc để đảm bảo khách hàng cung cấp thông tin này.</p>

<p style="text-align: justify;">Đây là một ví dụ cho bạn thấy cách dùng ràng buộc NOT NULL trong một database PostgreSQL:</p>

<pre id="pre0" style="text-align: justify;">
CREATE TABLE Customers (
    ID int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255) NOT NULL,
    Mobile_No int NOT NULL,
    Age int
);</pre>

<p style="text-align: justify;">Nếu thử chèn bản ghi khách hàng mà không có trường&nbsp;<strong>Age</strong>, database sẽ chấp nhận nó mà không gặp lỗi:</p>

<pre id="pre1" style="text-align: justify;">
INSERT INTO Customers (ID, LastName, FirstName, Mobile_No)
VALUES (123456, &#039;Dior&#039;, &#039;Christian&#039;, 0723000000);</pre>

<p style="text-align: justify;">Tuy nhiên, nếu thử chèn một bản ghi mà không có trường&nbsp;<strong>FirstName</strong>, database sẽ bỏ qua nó bằng một thông báo lỗi:</p>

<pre id="pre2" style="text-align: justify;">
ERROR: null value in column &quot;firstname&quot; violates not-null constraint
Detail: Failing row contains (123456, Dior, null, 723000000, null).</pre>

<h2 style="text-align: justify;">Ràng buộc PRIMARY KEY</h2>

<p style="text-align: justify;">KEY là một thuộc tính độc đáo đặt một cột hoặc trường xác định bộ dữ liệu của bảng (hoặc một bản ghi) trong hệ thống database. Một ràng buộc PRIMARY KEY đảm bảo tính duy nhất của các giá trị trong một cột hoặc tập hợp cột. Nó hoạt động như một định danh duy nhất trong một hàng, ngăn trùng lặp bản ghi ở một bảng database.</p>

<p style="text-align: justify;">Các khóa chính chứa những giá trị độc đáo và không thể chứa giá trị NULL. Mỗi bảng database SQL chỉ được có duy nhất một khóa chính. PRIMARY KEY có thể có một hoặc nhiều cột.</p>

<p style="text-align: justify;">Ví dụ, bạn đang tạo một database của các bản ghi khách hàng. Bạn cần mỗi khách hàng nhập vào số ID của họ khác với những khách hàng khác. Bạn có thể áp dụng ràng buộc khóa chính để đảm bảo không có khách hàng trùng số ID.</p>

<p style="text-align: justify;">Code sau cho bạn thấy cách có thể giới thiệu một ràng buộc khóa chính trong database MySQL:</p>

<pre id="pre3" style="text-align: justify;">
CREATE TABLE Customers (
    ID int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int,
   PRIMARY KEY (ID)
);</pre>

<p style="text-align: justify;">Database này sẽ không chấp nhận giá trị đó nếu người dùng nhập vào bản ghi khác với một ID tương tự. Thay vào đó, nó sẽ sinh lỗi báo trùng lặp. Người dùng cố gắng chèn hai bản ghi cùng ID trong ví dụ sau:</p>

<pre id="pre4" style="text-align: justify;">
INSERT INTO Customers (ID, LastName, FirstName, Age)
VALUES (1, &#039;John&#039;, &#039;Doe&#039;, 35 ); 

INSERT INTO Customers (ID, LastName, FirstName, Age)
VALUES (1, &#039;Mary&#039;, &#039;Jane&#039;, 35 );</pre>

<p style="text-align: justify;">Database sẽ hiện một thông báo lỗi:</p>

<pre id="pre5" style="text-align: justify;">
Duplicate entry &#039;1&#039; for key &#039;PRIMARY&#039;</pre>

<p style="text-align: justify;">Thế nhưng nếu bạn thay đổi ID của khách hàng thứ hai, database chấp nhận mục nhập đó. Vì thế, khóa chính đảm bảo không có ID trùng lặp trong bản ghi khách hàng.</p>

<h2 style="text-align: justify;">Ràng buộc FOREIGN KEY</h2>

<pre id="pre6" style="text-align: justify;">
CREATE TABLE Customers (
    customer_id INT PRIMARY KEY,
    first_name VARCHAR(50),
    last_name VARCHAR(50)
);

CREATE TABLE Orders (
    order_id INT PRIMARY KEY,
    customer_id INT,
    order_date DATE,
    FOREIGN KEY (customer_id) REFERENCES Customers(customer_id)
);

INSERT INTO Customers(customer_id, first_name, last_name)
VALUES (1, &#039;Christian&#039;, &#039;Dior&#039;);

INSERT INTO Orders(order_id, customer_id, order_date)
VALUES (1, 1, &#039;2023-08-07&#039;);</pre>

<p style="text-align: justify;">Các khóa ngoại thiết lập mối quan hệ giữa hai bảng. Bạn có thể thêm một khóa ngoại vào một trường/cột trong một bảng tham chiếu khóa chính này ở bảng khác.</p>

<p style="text-align: justify;">Bảng chứa khóa chính là bảng cha, còn bảng chứa khóa ngoại là bảng con. Khi đó, một bản ghi không thể tồn tại trong bảng con nếu không tham chiếu tới bảng cha.</p>

<p style="text-align: justify;">Ràng buộc khóa ngoại ngăn chặn hành động phá hủy các liên kết giữa các khóa ngoại. Ví dụ, bạn không thể&nbsp;<strong>DROP&nbsp;</strong>một bảng nếu nó liên kết tới bảng khác bằng một khóa ngoại. Bạn sẽ phải bỏ cả hai bảng cùng lúc.</p>

<p style="text-align: justify;">Khác khóa chính, bạn có thể sao chép khóa ngoại và có nhiều hơn một khóa ngoại trong một bảng. Những giá trị khóa ngoại cũng có thể là&nbsp;<strong>NULL</strong>. Ở ví dụ sau, bạn phải dùng&nbsp;<strong>customer_id</strong>&nbsp;để tạo một đơn hàng.</p>

<pre id="pre7" style="text-align: justify;">
CREATE TABLE Customers (
    customer_id INT PRIMARY KEY,
    first_name VARCHAR(50),
    last_name VARCHAR(50)
);

CREATE TABLE Orders (
    order_id INT PRIMARY KEY,
    customer_id INT,
    order_date DATE,
    FOREIGN KEY (customer_id) REFERENCES Customers(customer_id)
);

INSERT INTO Customers(customer_id, first_name, last_name)
VALUES (1, &#039;Christian&#039;, &#039;Dior&#039;);

INSERT INTO Orders(order_id, customer_id, order_date)
VALUES (1, 1, &#039;2023-08-07&#039;);</pre>

<p style="text-align: justify;">Nếu thử tạo một đơn hàng mà không có<strong>&nbsp;customer_id&nbsp;</strong>hiện tại, database hiện một thông báo lỗi:</p>

<pre id="pre8" style="text-align: justify;">
Cannot add or update a child row: a foreign key constraint fails
(`db_9_4ee205c`.`orders`, CONSTRAINT `orders_ibfk_1` FOREIGN KEY
(`customer_id`) REFERENCES `customers` (`customer_id`))</pre>

<h2 style="text-align: justify;">Ràng buộc UNIQUE</h2>

<p style="text-align: justify;">Ràng buộc này đảm bảo không tồn tại hai hàng có cùng giá trị cho một cột cụ thể. Giống như khóa chính, một ràng buộc duy nhất duy trì tính toàn vẹn dữ liệu và ngăn các mục nhập trùng lặp. Nếu phải xử lý database được thiết kế kém mà không có ràng buộc UNIQUE, bạn có thể phải tìm và xóa các bản sao.</p>

<p style="text-align: justify;">Khác khóa chính, bạn có thể có nhiều ràng buộc UNIQUE trên một bảng. Ví dụ, khi tạo bảng&nbsp;<strong>Customers</strong>, bạn có thể muốn sở hữu những ID duy nhất và số điện thoại. Để thêm một ràng buộc như thế bằng server MySQL, dùng cú pháp này:</p>

<pre id="pre9" style="text-align: justify;">
CREATE TABLE Customers (
    ID int NOT NULL UNIQUE,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Mobile_No BIGINT UNIQUE 
);</pre>

<p style="text-align: justify;">Nếu chèn bản ghi với cùng số điện thoại trong database, sau đó nó sẽ hiện một thông báo lỗi.</p>

<pre id="pre10" style="text-align: justify;">
INSERT INTO Customers (ID, LastName, FirstName, Mobile_No)
VALUES (123456, &#039;Dior&#039;, &#039;Christian&#039;, 254000000 );

INSERT INTO Customers (ID, LastName, FirstName, Mobile_No)
VALUES (7891011, &#039;Dedan&#039;, &#039;Kimathi&#039;, 254000000 );</pre>

<p style="text-align: justify;">Thông báo lỗi này trông sẽ như sau:</p>

<pre id="pre11" style="text-align: justify;">
Duplicate entry &#039;254000000&#039; for key &#039;Mobile_No&#039;</pre>

<p style="text-align: justify;">Ràng buộc UNIQUE đảm bảo database sẽ không có khách hàng trùng ID hoặc số điện thoại.</p>

<h2 style="text-align: justify;">Ràng buộc CHECK</h2>

<p style="text-align: justify;">Ràng buộc CHECK hạn chế phạm vi dữ liệu đặt trong một cột. Thêm ràng buộc CHECK trên một cột sẽ chỉ cho phép những giá trị được chỉ định cho cột đó. Nó thực thi tính toàn vẹn dữ liệu bằng cách đảm bảo người dùng chỉ chèn dữ liệu hợp lệ vào bảng.</p>

<p style="text-align: justify;">Ràng buộc CHECK phải đánh giá giá trị là TRUE hoặc UNKNOWN cho từng hàng hoặc mục bảng cụ thể. Nếu giá trị là FALSE, database hiện một thông báo lỗi.</p>

<p style="text-align: justify;">Ví dụ, trong bảng Customers, có thể bạn chỉ muốn phục vụ khách hàng trên 18 tuổi. Bạn có thể thêm ràng buộc CHECK để đảm bảo bạn không phục vụ khách hàng dưới độ tuổi đó. Bạn có thể thêm ràng buộc trong database PostgreSQL, như code bên dưới:</p>

<pre id="pre12" style="text-align: justify;">
CREATE TABLE Customers (
    ID int NOT NULL,
    Age int CHECK(Age&gt;=18),
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Mobile_No BIGINT UNIQUE 
);</pre>

<p style="text-align: justify;">Giờ nếu thử chèn tuổi của khách hàng dưới 18:</p>

<pre id="pre13" style="text-align: justify;">
INSERT INTO Customers (ID, Age, LastName, FirstName, Mobile_No)
VALUES (123456, 15, &#039;Dior&#039;, &#039;Christian&#039;, 1254000000 );</pre>

<p style="text-align: justify;">Database sẽ hiện thông báo lỗi như thế này:</p>

<pre id="pre14" style="text-align: justify;">
ERROR: new row for relation &quot;customers&quot; violates check constraint
&quot;customers_age_check&quot;
Detail: Failing row contains (123456, 15, Dior, Christian, 1254000000)</pre>

<p style="text-align: justify;">Trên đây chỉ là&nbsp;<strong>một vài trong số những ràng buộc&nbsp;SQL&nbsp;xây dựng cấu trúc dữ liệu tốt nhất</strong>. Bạn có thể học thiết kế database như ý muốn từ những ràng buộc này.</p>
		</div>
				<div id="author">
						<p>
				<strong>Nguồn tin:</strong>
				Quantrimang.com
			</p>
		</div>
	</div>
	<div id="footer" class="clearfix">
		<div id="url">
			<strong>URL của bản tin này: </strong><a href="https://www.nguoicodonvn2008.info/vi/news/savefile/kien-thuc-may-tinh/nhung-rang-buoc-sql-dam-bao-cau-truc-du-lieu-tot-7453.html" title="Những ràng buộc SQL đảm bảo cấu trúc dữ liệu tốt">https://www.nguoicodonvn2008.info/vi/news/savefile/kien-thuc-may-tinh/nhung-rang-buoc-sql-dam-bao-cau-truc-du-lieu-tot-7453.html</a>

		</div>
		<div class="clear"></div>
		<div class="copyright">
			&copy; .&#x3A; Nguoicodonvn2008.info - Cõi lòng người cô đơn &#x3A;.
		</div>
		<div id="contact">
			<a href="mailto:admin@nguoicodonvn2008.info">admin@nguoicodonvn2008.info</a>
		</div>
	</div>
</div>
        <div id="timeoutsess" class="chromeframe">
            Bạn đã không sử dụng Site, <a onclick="timeoutsesscancel();" href="https://www.nguoicodonvn2008.info/#">Bấm vào đây để duy trì trạng thái đăng nhập</a>. Thời gian chờ: <span id="secField"> 60 </span> giây
        </div>
        <div id="openidResult" class="nv-alert" style="display:none"></div>
        <div id="openidBt" data-result="" data-redirect=""></div>
		</script>
		<div class="car-top">
  <span><img src="https://www.nguoicodonvn2008.info/themes/default/images/car.png" alt=""></span>
</div>
<div id="run_cronjobs" style="visibility:hidden;display:none;"><img alt="cron" src="/index.php?second=cronjobs&amp;p=o0c91oJd" width="1" height="1" /></div>
<script src="https://www.nguoicodonvn2008.info/assets/js/jquery/jquery.min.js"></script>
<script>var nv_base_siteurl="/",nv_lang_data="vi",nv_lang_interface="vi",nv_name_variable="nv",nv_fc_variable="op",nv_lang_variable="language",nv_module_name="news",nv_func_name="savefile",nv_is_user=0, nv_my_ofs=-4,nv_my_abbr="EDT",nv_cookie_prefix="nv4c_e856T",nv_check_pass_mstime=1738000,nv_area_admin=0,nv_safemode=0,theme_responsive=0,nv_recaptcha_ver=2,nv_recaptcha_sitekey="",nv_recaptcha_type="image",XSSsanitize=1;</script>
<script src="https://www.nguoicodonvn2008.info/assets/js/language/vi.js"></script>
<script src="https://www.nguoicodonvn2008.info/assets/js/DOMPurify/purify3.js"></script>
<script src="https://www.nguoicodonvn2008.info/assets/js/global.js"></script>
<script src="https://www.nguoicodonvn2008.info/assets/js/site.js"></script>
<script src="https://www.nguoicodonvn2008.info/themes/default/js/news.js"></script>
<script src="https://www.nguoicodonvn2008.info/themes/default/js/main.js"></script>
<script src="https://www.nguoicodonvn2008.info/themes/default/js/custom.js"></script>
<script type="application/ld+json">
        {
            "@context": "https://schema.org",
            "@type": "Organization",
            "url": "https://www.nguoicodonvn2008.info",
            "logo": "https://www.nguoicodonvn2008.info/uploads/angel.gif"
        }
        </script>
<script src="https://www.nguoicodonvn2008.info/themes/default/js/bootstrap.min.js"></script>
<script type="text/javascript">
var $scrolltop = $('.car-top');
$scrolltop.on('click', function () {
    $('html,body').animate({
        scrollTop: 0
    }, 800);
    $(this).addClass("car-run");
    setTimeout(function(){ $scrolltop.removeClass('car-run');}, 1000);
    return false;
});
$(window).on('scroll', function ()
{ 
    if($(window).scrollTop() >= 200)
    {
        $scrolltop.addClass("show");
        $scrolltop.addClass("car-down");
    }
    else
    {
       $scrolltop.removeClass("show");
       setTimeout(function(){ $scrolltop.removeClass('car-down');}, 300);
    }
});
</script>
</body>
</html>