Tải bản đầy đủ (.pdf) (20 trang)

Tài liệu Beginning SQL Server Modeling- P4 pdf

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.36 MB, 20 trang )

CHAPTER 3  DOMAIN-SPECIFIC LANGUAGES 101: LOLA’S LUNCH COUNTER
61
and execute another dir command to be sure the compiler created the LunchCounter.mx image file (see
Figure 3-35).


Figure 3-35. SQL compiling the LunchCounter.mg file to create the LuncCounter.mx image file
Next, you want to use the DSL Grammar executor command-line tool to generate an M code version
of the SandwichLanguage.dsl file. (The executable was formerly called the Mgrammar executor, which is
where it got its mgx.exe name.) With any executable command-line tool, you can normally enter the
name of the command followed by /? to get a listing of the parameters that can be used to pass
information to the tool when it executes. Figure 3-36 shows a list of these parameters. The two you’re
interested in are reference and MModuleName. (Note that most, but not all, have shorthand aliases, like /r:
for /reference:, to save you time when you’re using the tool frequently.)

Download from Wow! eBook <www.wowebook.com>
CHAPTER 3  DOMAIN-SPECIFIC LANGUAGES 101: LOLA’S LUNCH COUNTER
62

Figure 3-36. Displaying the MGX tool parameters
At the command prompt, enter and execute the command as follows:

Mgx.exe SandwichLanguage.dsl /reference:LunchCounter.mx /MModuleName: LunchCounter

Figure 3-37 shows this, except that I’ve used aliases for setting the parameters to keep the command
from wrapping in the command window. You can try it either way. If you do a dir directory listing, you
can see that this command created the SandwichLanguage.m file.

Download from Wow! eBook <www.wowebook.com>
CHAPTER 3  DOMAIN-SPECIFIC LANGUAGES 101: LOLA’S LUNCH COUNTER
63



Figure 3-37. Running the MGX MGrammar executor tool to generate the SandwichLanguage.m file
Loading this file into Intellipad (see Figure 3-38), you can see that it is an M Graph almost exactly
the same as the one generated earlier when you made the final revisions to the DSL Grammar code prior
to setting up for the deployment phase. The one difference is that the graph is now defined within the
LunchCounter module.

Download from Wow! eBook <www.wowebook.com>
CHAPTER 3  DOMAIN-SPECIFIC LANGUAGES 101: LOLA’S LUNCH COUNTER
64

Figure 3-38. Displaying SandwichLanguage.m in Intellipad M Graph mode
You should be ready for the last step of installing the schema and instances to the database. You can
do this with the mx.exe executor tool.
The MSchema file, LunchCounter.Schema.m, defines the four types and extents that the M Graph
uses: SandwichOrders, Breads, Stuff, and Condiments. The MSchema file tells the SQL Server Modeling
framework how to store the instances of the data represented in the M Graph in a data store. With your
MSchema defined, you can use both the M Graph created by the MExecutor (mgx.exe) and the
MSchema (LunchCounter.Schema.m, as shown in Figure 3-32) to compile your M files for use in a SQL
Server data store by using the M compiler:

m.exe SandwichLanguage.m LunchCounter.Schema.m /t:TSql10

The /t: target flag specifies that the output will be used for deploying the schema and instances.
The result of executing this command is the image file SandwichLanguage.mx. (See the listing generated
by the dir command in Figure 3-39.)

Download from Wow! eBook <www.wowebook.com>
CHAPTER 3  DOMAIN-SPECIFIC LANGUAGES 101: LOLA’S LUNCH COUNTER
65


Figure 3-39. Generating the SandwichLanguage.mx image file
You can also add a package flag (/p) to specify that instead of an image file, you want a SQL script:

m.exe SandwichLanguage.m LunchCounter.Schema.m /t:TSql10 /p:Script

This generates the SQL script file SandwichLanguage.sql (see Figure 3-40).


Figure 3-40. Generating the SandwichLanguage.sql script file with the m.exe compiler
You can run this script as a query in SQL Server Management Studio (SSMS) to load the database.
Bring up SSMS, click on the File menu, then Open

File (see Figure 3-41).
Download from Wow! eBook <www.wowebook.com>
CHAPTER 3  DOMAIN-SPECIFIC LANGUAGES 101: LOLA’S LUNCH COUNTER
66

Figure 3-41. Opening the generated SQL script file in SQL Server Management Studio
When the Open File dialog box appears, browse to the C:\LunchCounter folder and select the
SandwichLanguage.sql. To open it, either double-click the file or click the Open button. This will display
the contents of the T-SQL script file. Click the Execute button on the SSMS toolbar, as shown in Figure
3-42.


Figure 3-42. SQL Server Management Studio after opening the SandwichLanguage.sql T-SQL script file
Download from Wow! eBook <www.wowebook.com>
CHAPTER 3  DOMAIN-SPECIFIC LANGUAGES 101: LOLA’S LUNCH COUNTER
67
An alternative approach to deploying the database is to use the mx.exe command-line utility. Figure

3-43 displays the syntax for using the mx.exe tool to deploy to the database, along with the output
generated.


Figure 3-43. SQL installing the LunchCounter database using the MX executor
Regardless of which way you decide to deploy the LunchCounter module, you can check the
installation by bringing up SQL Server Management Studio. If it is already up, simply click the server
connection and press the F5 key to refresh the display. You should now see LunchCounter displayed as
one of the databases under the Databases list. Expand LunchCounter, then click on Tables. (Figure 3-44
shows a partial view of the LunchCounter database Tables list.) Scroll down the list until you get to
where the LunchCounter tables should appear. You should see four tables listed:
• LunchCounter.Breads
• LunchCounter.Condiments
• LunchCounter.SandwichOrders
• LunchCounter.Stuffs

You can examine the data in each of these tables by right-clicking on the table name and selecting
Edit Top 200 Rows.

Download from Wow! eBook <www.wowebook.com>
CHAPTER 3  DOMAIN-SPECIFIC LANGUAGES 101: LOLA’S LUNCH COUNTER
68

Figure 3-44. Checking the LunchCounter database Tables list in SSMS
Before reviewing the data in the tables, let’s recall the four sample orders you set up in your
SandwichLanguage.dsl file. The final Intellipad split-pane view (refer to Figure 3-31) shows these. They
consisted of the following:
• Order 1: Pastrami on Rye with Lettuce & Tomato.
• Order 2: Ham on 9-Grain Wheat with Mayo and Mustard.
• Order 3: Spam on White with Salsa.

• Order 4: Grilled Tofu & Portabella in Pita with Lettuce.

These should be reflected in the four LunchCounter database tables. Note that there are three
many-to-one relationships in these orders: two condiments in Orders 1 and 2, and two stuffs in Order 4.
The tables should reflect these.
Figure 3-45 shows the four instances of SandwichOrder in the SandwichOrders table. This table
contains the order keys only, since all the remaining data of an order (the Bread, Stuffs, and Condiments
values) are reflected in the three other tables. If Lola and Norm get into further design iterations and
refinements, the SandwichOrders table might contain other data, such as an Order timestamp. But for
now, each instance in the table has only a key, reflected as a foreign key in each of the Breads,
Condiments, and Stuffs tables.

Download from Wow! eBook <www.wowebook.com>

×