sqlschool.gr logo

articles

Articles of SQLschool.gr Team

The HellasGate sample database

Antonios Chatzipavlis
Wednesday 15 February 2023

Overview

Όλα αυτά τα χρόνια που ασχολούμαι με το SQL Server έχω χρησιμοποιήσει πολλές databases που χαρακτηρίζονται σαν sample database τόσο στα μαθήματα που κάνω όσο και στις παρουσιάσεις μου.

Έχοντας ξεκινήσει από την Pubs στις εκδόσεις τους SQL Server 6,6.5,7, την Northwind στις 7, 2000 και μετά τις AdventureWorks, Contoso, WorldWideImporters έκανα ωραιότατα την δουλειά μου.

Παρόλα αυτά όμως πάντα ήθελα να φτιάξω μια δικιά μου sample database που να καλύπτει τις ανάγκες μου που κάποιες από αυτές ήταν / είναι:

  • Να έχουν ελληνικό περιεχόμενο για μπορώ να δείχνω χαρακτηριστικά όπως full-text search.
  • Να είναι ready for analytics.
  • Να αποτελεί την βάση πάνω στην οποία θα μπορώ να προσθέτω και να αφαιρώ τα εκάστοτε features που υπάρχουν ή θα εμφανιστούν στο SQL Server.
  • Να μπορώ να τη μεγαλώνω σε χώρο και αριθμό εγγραφών με εύκολο τρόπο.

Τhe HellasGate database

Όπως συμβαίνει πάντα σε όλους μας αυτό το project έπαιρνε συνέχεια αναβολή μέχρι που βρήκα το χρόνο για να το υλοποιήσω.

Είμαι στην ευχάριστη θέση να σας παρουσιάσω την HellasGate sample database.

H database αυτή είναι μια βάση που περιέχει την λογική ενός retail store που είναι μια επιχειρηματική δραστηριότητα που όλοι γνωρίζουν καθώς είναι στην καθημερινότητα μας. Περιέχει παραγγελίες και τιμολόγια, πελάτες, προμηθευτές, διακινητές, προϊόντα.

H database αυτή έχει τρία data files και ένα log file. Το mdf όπως πάντα είναι στο primary filegroup και υπάρχει το secondary filegroup στο οποίο ανήκουν τα επόμενα δύο data files. Το secondary filegroup είναι το default που σημαίνει ότι όλα τα objects δημιουργούνται σε αυτό.

The dfi schema

Υπάρχουν αρκετά schemas που εύκολα θα δείτε με μια ματιά αλλά υπάρχει και το dfi schema που είναι αυτό περιέχει όλη την δουλειά που έχω κάνει για να καλύψω τις ανάγκες που ανέφερα και παραπάνω. Σε αυτό υπάρχουν tables και stored procedures που δεν είναι ορατά με την πρώτη ματιά καθώς τα έχω κάνω hide from client tools.

Τα tables που υπάρχουν σε αυτό το schema είναι τα Cities, GreekNames, Streets που περιέχουν αυτό που λένε απλά είναι με ελληνικά.

Επίσης υπάρχουν οι stored procedures ClearData, οι GenerateΧΧΧΧ, που κάνουν αυτό που λέει το όνομα τους και η βασική που καλεί όλες τις παραπάνω η ReGenerateData.

ReGenerateData stored procedure

ReGenerateData Syntax

[dfi].[ReGenerateData] 
                    @numofCustomers int = 5000,
                    @numofSuppliers int = 500,
                    @numofEmployees int = 500,
                    @numofProducts int = 2000,
                    @numofShippers int = 200,
                    @numofOrders int = 100000,
                    @maxItemsInOrder int = 5,
                    @calendarstartdate date = null,
                    @calendarnumberofyears int = null
ReGenerateData Parameters
Parameter Data Type Default Value Usage
@numofCustomers int 5000 Ορίζει τον αριθμό των εγγραφών που θα έχει ο πίνακας sales.Customers
@numofSuppliers int 500 Ορίζει τον αριθμό των εγγραφών που θα έχει ο πίνακας products.Suppliers
@numofEmployees int 500 Ορίζει τον αριθμό των εγγραφών που θα έχει ο πίνακας hr.Employees
@numofProducts int 2000 Ορίζει τον αριθμό των εγγραφών που θα έχει ο πίνακας products.Products
@numofShippers int 200 Ορίζει τον αριθμό των εγγραφών που θα έχει ο πίνακας sales.Shippers
@numofOrders int 100000 Ορίζει τον αριθμό των εγγραφών που θα έχει ο πίνακας sales.OrdersHeader
@maxItemsInOrder int 5 Ορίζει τον μέγιστο αριθμό των εγγραφών που θα έχει κάθε Order στο πίνακας sales.OrderItems
@calendarstartdate date null Ορίζει τον ημερομηνία από την οποία θα ξεκινάει ο πίνακας ημερολογίου bi.DimCalendar. Αν δεν περάσουμε τιμη τότε η αρχική ημερομηνία είναι πέντε χρόνια από την τρέχουσα ημερομηνία
@calendarnumberofyears int null Ορίζει το πόσα χρόνια θα περιέχει ο πίνακας ημερολογίου. Αν δεν περάσουμε τιμή είναι δέκα χρόνια

Μπορείτε να αλλάξετε την οποιαδήποτε παράμετρο και να φτιάξετε το μέγεθος που θέλετε.

How to get it

Εφόσον θέλετε να αποκτήσετε την HellasGate sample database μπορείτε να την κάνετε download από το GitHub μου και απλά να εκτελέσετε το script υπάρχει στο zip file. Στο τέλος του script αυτού γίνεται κλήση στην ReGenerateData με τις default τιμές.

Comments

15 Feb 2023 @ 11:29 PM

user-gravatar

Panayota Panayotou

Εξαιρετική ιδέα και πολύ χρήσιμο εργαλείο στα χέρια μας! Ευχαριστούμε! :)

17 Feb 2023 @ 12:17 PM

user-gravatar

Ioannis Iraklis Drossos

Καλή ιδέα.

16 Mar 2023 @ 12:47 PM

user-gravatar

Komninos Liakos

Εξαιρετικά! Ευχαριστούμε!

28 Mar 2023 @ 8:17 PM

user-gravatar

Nikos Athanasakis

Καλή ιδέα κ χρησιμοποιώ αρκετά .

Antonios Chatzipavlis

Antonios Chatzipavlis

Antonios is a Data Solutions Consultant and Trainer. He has been working in IT since 1988. In his career, he has worked as senior developer, IT Manager, Solutions Architect and IT Consultant. Since 1995 he has been devoted on new technologies and software development tools, mainly by Microsoft, either by training company staff and colleagues or assisting them in design, development and implementation as a consultant or chief developer. He has focused in Databases and Data Science since 1995. He specialized in Microsoft SQL Server since version 6.0 in areas like SQL Server Internals, Database Design and Development, Business Intelligence and in 2010 he has started working with Azure Data Platform, NoSQL databases, Big Data Technologies and Machine Learning. He is an active member of many IT communities in Greece, answering colleagues' questions and writing articles in his web site. He is the owner of SQLschool.gr which is a community portal with a lot of information about Microsoft SQL Server. He has been a Microsoft Certified Trainer (MCT) since 2000. Microsoft honored him as MVP on Data Platform due to his activities in SQL Server since 2010. He holds a large number of Microsoft Certifications and Microsoft SQL Server Certifications since version 6.5.

Tip

What's New in SQL Server 2022 - Episodes

More Tips...

Become a member

If you want to receive updates from us become a member to our community.

Connect

Explore

Learn


sqlschool.gr © 2010-2024 All rights reserved

This site uses cookies for operational and analytics purposes only. By continuing to browse this site, you agree to their use.